# Правило — Формирование проекта SQLite БД --- ## Структура проекта ``` projects/sl3/{project_name}/ readme.md settings/ connection.json {module}/ tables/ scripts/ init/ {module}.sql deploy/ _docs/ diagrams/ openapi.yaml architecture.md ``` --- ## Правила ### 1. Модуль Каждый функциональный модуль — отдельная папка в корне проекта. SQLite не поддерживает схемы, поэтому модуль = логическая группа объектов. ### 2. Таблицы - Путь: `{module}/tables/` - Формат: `.sql` - Одна таблица = один файл - Именование: `{table_name}.sql` (например `users.sql`, `sessions.sql`) - Содержимое: `CREATE TABLE` с комментариями ### 3. Скрипты - Путь: `{module}/scripts/` - Произвольные SQL-скрипты (запросы, утилиты, seed-данные) - SQLite не поддерживает хранимые процедуры — вся логика в скриптах ### 4. Init - Путь: `{module}/init/` - Скрипты инициализации: создание таблиц, индексов, начальных данных - Выполняются один раз при первом развёртывании ### 5. Deploy - Путь: `deploy/` (в корне проекта) - Инфраструктура развёртывания: docker-compose, bat-файлы, shell-скрипты - НЕ SQL-миграции ### 6. Главный файл модуля - Путь: `{module}/{module}.sql` - Точка входа — подключает все таблицы и скрипты модуля - Порядок: сначала таблицы, потом скрипты --- ## Особенности SQLite - Нет хранимых функций и процедур — папка `functions/` не используется - Нет схем — все объекты в одном пространстве имён - Один файл БД = один проект - Типы данных ограничены: INTEGER, TEXT, REAL, BLOB, NUMERIC - `PRAGMA` настройки размещаются в `init/` --- ## Пример: проект kit_example_sl3 ``` projects/sl3/kit_example_sl3/ readme.md settings/ connection.json main/ tables/ users.sql sessions.sql roles.sql scripts/ seed_roles.sql 2026-07-08_add-email-column.sql init/ create_indexes.sql set_pragmas.sql main.sql deploy/ docker-compose.yml up.bat down.bat _docs/ diagrams/ openapi.yaml architecture.md ``` --- ## Настройки подключения Файл: `settings/connection.json` ```json { "database": "{database_name}.db", "journal_mode": "WAL", "foreign_keys": true } ``` --- ## Инструменты - `sqlite3 {database}.db < {script}.sql` — выполнить скрипт - `.dump` — экспорт всей БД - `.read` — выполнить файл SQL