Добавь в существующее веб-приложение раздел "Управление базой данных" с функцией проверки и синхронизации структуры БД по эталонному файлу schema.json.
Требования:
1. Это дополнение к уже работающему приложению — не создавать отдельный проект.
2. Файл schema.json должен содержать **точную структуру базы данных, требуемую текущим проектом**.
Он формируется на основе **реальных таблиц и полей, необходимых для функционирования приложения**.
Пример структуры:
{
"tables": {
"users": {
"columns": {
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
"username": "TEXT NOT NULL UNIQUE",
"email": "TEXT",
"role": "TEXT DEFAULT 'user'",
"created_at": "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"
}
},
"orders": {
"columns": {
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
"user_id": "INTEGER NOT NULL",
"total": "REAL",
"status": "TEXT DEFAULT 'pending'",
"created_at": "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"
},
"foreign_keys": [
"FOREIGN KEY (user_id) REFERENCES users (id)"
]
},
"products": {
"columns": {
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
"name": "TEXT NOT NULL",
"price": "REAL",
"stock": "INTEGER DEFAULT 0"
}
}
}
}
ВАЖНО:
- schema.json не является шаблоном — это **эталонная схема текущего проекта**.
- При разработке или обновлении проекта — этот файл обновляется вручную или через генератор, чтобы отражать **актуальные требования к БД**.
3. В интерфейсе добавь панель с кнопками:
- [Проверить подключение к БД]
→ Показывает: ✅ Подключено / ❌ Ошибка (с описанием)
- [Проверить структуру БД]
→ Сравнивает текущие таблицы и столбцы с schema.json
→ Выводит:
• Отсутствуют таблицы: orders
• Нет столбцов: users.email, products.stock
- [Создать недостающие таблицы и столбцы]
→ Автоматически создаёт всё, чего не хватает, на основе schema.json
→ Показывает лог: "Создана таблица orders", "Добавлен столбец users.email"
4. Реализация:
- Бэкенд (на любом языке, встроенный в приложение) загружает schema.json
- Проверяет подключение к БД
- Получает реальную структуру БД (список таблиц и столбцов)
- Сравнивает с эталоном из schema.json
- При нажатии кнопки — генерирует и выполняет SQL (CREATE TABLE, ALTER TABLE ADD COLUMN)
5. API (пример):
- GET /api/db/status → { connected: true }
- GET /api/db/compare → { missing_tables: [...], missing_columns: [...] }
- POST /api/db/migrate → выполняет миграции, возвращает лог
6. Интерфейс:
- Простая админ-панель (в разделе "Настройки" или "Админка")
- Кнопки: Проверить подключение, Проверить структуру, Создать недостающее
- Результат — в виде списка с иконками
- Лог операций — в раскрывающемся блоке
7. Безопасность:
- Доступ только у администраторов
- Подтверждение перед миграцией (опционально)
Цель: дать администратору возможность одним кликом проверить и привести структуру БД в соответствие с актуальной схемой проекта, описанной в schema.json.