Миграции: _migrations + applyMigrations + sql/migrations/
APP_ENV: test/production с жёлтым баннером в UI Config: версия 0.1.12
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
-- 001: Добавить колонку impersonated_by в audit_log
|
||||
-- Дата: 2026-06 (была добавлена в ensureSchema вручную)
|
||||
|
||||
ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS impersonated_by VARCHAR(255) DEFAULT NULL;
|
||||
@@ -0,0 +1,18 @@
|
||||
-- 002: Добавить значение RESTORE в CHECK-констрейнт audit_log.action
|
||||
-- Дата: 2026-06 (до этого CHECK допускал только CREATE, UPDATE, DELETE)
|
||||
|
||||
-- Сначала удаляем старый CHECK, потом создаём новый со значением RESTORE
|
||||
DO $$
|
||||
DECLARE
|
||||
cn text;
|
||||
BEGIN
|
||||
SELECT con.conname INTO cn
|
||||
FROM pg_constraint con
|
||||
JOIN pg_class rel ON rel.oid = con.conrelid
|
||||
WHERE rel.relname = 'audit_log' AND con.contype = 'c';
|
||||
IF cn IS NOT NULL THEN
|
||||
EXECUTE 'ALTER TABLE audit_log DROP CONSTRAINT ' || cn;
|
||||
END IF;
|
||||
EXECUTE 'ALTER TABLE audit_log ADD CONSTRAINT audit_log_action_check CHECK (action IN (''CREATE'',''UPDATE'',''DELETE'',''RESTORE''))';
|
||||
END;
|
||||
$$;
|
||||
@@ -0,0 +1,16 @@
|
||||
# Миграции БД
|
||||
|
||||
Каждый файл — одна миграция. Применяются при старте приложения автоматически в порядке сортировки имён.
|
||||
|
||||
## Как добавить новую миграцию
|
||||
|
||||
1. Создать файл `{номер}_{описание}.sql` в этой папке
|
||||
2. Номер должен быть следующим (003, 004, ...)
|
||||
3. SQL должен быть идемпотентным (`IF NOT EXISTS` где возможно)
|
||||
4. Закоммитить и запушнуть
|
||||
|
||||
## Важно
|
||||
|
||||
- Миграции выполняются **один раз**. После применения имя файла записывается в таблицу `_migrations`.
|
||||
- Уже работающие миграции не перезапускаются — если нужно что-то изменить, создавай новую миграцию, не редактируй старую.
|
||||
- Все DDL должны быть безопасны для повторного запуска — используй `IF NOT EXISTS`, `ADD COLUMN IF NOT EXISTS`.
|
||||
Reference in New Issue
Block a user