Kit.Db/rules/sqlite/db-project-rule.md

127 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Правило — Формирование проекта 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