Добавление таблицы категорий и .env линков на API ВОЛК
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+36
-2
@@ -6,6 +6,7 @@ import random
|
||||
from datetime import datetime
|
||||
from mysql.connector import errorcode
|
||||
from dotenv import load_dotenv
|
||||
from werkzeug.security import generate_password_hash
|
||||
|
||||
# Загрузка переменных окружения
|
||||
load_dotenv()
|
||||
@@ -123,7 +124,7 @@ def ensure_database_structure():
|
||||
number BIGINT NOT NULL,
|
||||
unit_name VARCHAR(255),
|
||||
name VARCHAR(255),
|
||||
about VARCHAR(2048),
|
||||
about VARCHAR(4096),
|
||||
about_social_picture VARCHAR(2048),
|
||||
modified DATETIME NULL,
|
||||
added DATETIME NULL,
|
||||
@@ -154,6 +155,14 @@ def ensure_database_structure():
|
||||
REFERENCES events(id)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||
''',
|
||||
'categories': '''
|
||||
CREATE TABLE categories (
|
||||
AUTO_ID INT AUTO_INCREMENT PRIMARY KEY,
|
||||
NUMBER BIGINT,
|
||||
ID VARCHAR(255),
|
||||
TITLE VARCHAR(2048)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||
'''
|
||||
}
|
||||
|
||||
@@ -178,6 +187,25 @@ def ensure_database_structure():
|
||||
log_message(f"Error checking/creating table {table_name}: {err}")
|
||||
raise err
|
||||
|
||||
# Создание дефолтного админа, если таблица users пуста
|
||||
try:
|
||||
cursor.execute("SELECT COUNT(*) as count FROM users")
|
||||
user_count = cursor.fetchone()[0]
|
||||
if user_count == 0:
|
||||
username = os.getenv('DEFNM')
|
||||
password = os.getenv('DEFPW')
|
||||
if username and password:
|
||||
hashed_password = generate_password_hash(password)
|
||||
cursor.execute(
|
||||
"INSERT INTO users (username, password) VALUES (%s, %s)",
|
||||
(username, hashed_password)
|
||||
)
|
||||
log_message(f"Created default admin user: {username}")
|
||||
else:
|
||||
log_message("Environment variables DEFNM/DEFPW not set. Admin not created.")
|
||||
except mysql.connector.Error as err:
|
||||
log_message(f"Error creating default admin: {err}")
|
||||
|
||||
# Проверка и добавление новых полей в существующие таблицы
|
||||
table_alterations = {
|
||||
'posts': [
|
||||
@@ -254,8 +282,14 @@ def ensure_database_structure():
|
||||
'CREATE UNIQUE INDEX IF NOT EXISTS uniq_post_event ON interlinks (post_id, event_id)'
|
||||
]
|
||||
|
||||
# Создание индексов для таблицы categories
|
||||
categories_indexes = [
|
||||
'CREATE INDEX IF NOT EXISTS idx_categories_number ON categories (NUMBER)',
|
||||
'CREATE INDEX IF NOT EXISTS idx_categories_id ON categories (ID)'
|
||||
]
|
||||
|
||||
# Объединяем все индексы
|
||||
all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes
|
||||
all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes + categories_indexes
|
||||
|
||||
for index_sql in all_indexes:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user