138 lines
3.3 KiB
Markdown
138 lines
3.3 KiB
Markdown
# Правило — Формирование проекта 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` — экспорт/импорт дампа |