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

138 lines
3.3 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.

# Правило — Формирование проекта PostgreSQL БД
---
## Структура проекта
```
projects/pg/{project_name}/
readme.md
settings/
connection.json
{schema}/
tables/
functions/
scripts/
init/
{schema}.psql
deploy/
_docs/
diagrams/
openapi.yaml
architecture.md
```
---
## Правила
### 1. Схема = модуль
Каждая схема PostgreSQL — это отдельная папка-модуль в корне проекта.
### 2. Таблицы
- Путь: `{schema}/tables/`
- Формат: `.psql`
- Одна таблица = один файл
- Именование: `{table_name}.psql` (например `user.psql`, `cabinet.psql`)
- Содержимое: `CREATE TABLE` с комментариями
### 3. Функции
- Путь: `{schema}/functions/{function_name}/`
- Каждая функция — отдельная папка
- Внутри: файл `.psql` с телом функции
- Именование папки: по имени функции (например `user_select_by_ids/`)
### 4. Скрипты
- Путь: `{schema}/scripts/`
- SQL-скрипты (миграции, seed-данные, утилиты)
- Именование миграций: `YYYY-MM-DD_description.sql`
### 5. Init
- Путь: `{schema}/init/`
- Скрипты инициализации: создание схемы, расширений, начальных данных
- Выполняются один раз при первом развёртывании
### 6. Deploy
- Путь: `deploy/` (в корне проекта)
- Инфраструктура развёртывания: docker-compose, bat-файлы, shell-скрипты
- НЕ SQL-миграции
### 7. Главный файл модуля
- Путь: `{schema}/{schema}.psql`
- Точка входа — подключает все таблицы и функции модуля
- Порядок: сначала таблицы, потом функции
### 8. Post-deploy
- Путь: `{schema}/{schema}.post-deploy.psql`
- Скрипты, выполняемые после деплоя (seed-данные, обновление зависимостей)
---
## Пример: проект kit_auth_pg
```
projects/pg/kit_auth_pg/
readme.md
settings/
connection.json
auth/
tables/
user.psql
cabinet.psql
user_cabinet.psql
functions/
user_select_by_ids/
user_select_by_ids.psql
user_create/
user_create.psql
scripts/
seed_roles.sql
2026-07-08_user-select-by-ids.sql
init/
create_schema.psql
auth.psql
auth.post-deploy.psql
deploy/
docker-compose.yml
up.bat
down.bat
restart.bat
init.sh
_docs/
diagrams/
openapi.yaml
architecture.md
```
---
## Настройки подключения
Файл: `settings/connection.json`
```json
{
"host": "localhost",
"port": 5432,
"database": "{database_name}",
"username": "postgres",
"password": ""
}
```
---
## Инструменты
- `apply-psql.sh` — применить SQL к БД
- `up.bat` / `down.bat` — запуск/остановка контейнера
- `docker-compose.yml` — конфигурация контейнера
- `export.bat` / `import.bat` — экспорт/импорт дампа