Добавление таблицы категорий и .env линков на API ВОЛК
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-11-14 12:30:31 +03:00
parent 6488f40613
commit 57d6d016a7
3 changed files with 45 additions and 51 deletions
+36 -2
View File
@@ -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: