Skip to main content

Cinga Backend Migrations

Bu dizin, veritabani migration SQL dosyalarinin tek kaynak konumudur.

Dosya formati:

VYYYYMMDDHHMMSS__kisa-aciklama.sql

Ornek:

V20260409103000__create_rule_events_indexes.sql
V20260409104500__constraint-add-message-read-state-unique.sql

Constraint fazi adlandirma kurali:

  • Constraint migration dosyalari __constraint- ile baslamalidir.
  • Partial unique migration dosyalari adinda partial-unique ifadesi tasimalidir.

Types/Ref fazi adlandirma kurali:

  • Enum tipi degisiklikleri icin dosya adi __types- ile baslamalidir.
  • Sozluk (reference) degisiklikleri icin dosya adi __ref- ile baslamalidir.

Index fazi adlandirma kurali:

  • Index migration dosyalari __index- ile baslamalidir.
  • Her __index- migration icin migrations/explain/<ayni-dosya-adi>.md explain raporu zorunludur.
  • Rapor BEFORE PLAN ve AFTER PLAN bolumlerini icermelidir.

Types/Ref migration SQL basliginda zorunlu satir:

-- COMPAT: backward-compatible

Breaking degisiklikte ek zorunlu satirlar:

-- COMPAT: breaking
-- COMPATIBILITY-WINDOW: 2-release
-- FALLBACK: <mapping-strategy>

DB-first is kurali:

  • Is kurallari uygulama koduna birakilmaz.
  • UNIQUE, Partial UNIQUE INDEX, CHECK kullanimi migration seviyesinde zorunludur.

Idempotency ve duplicate onleme kurali:

  • Dosya adinda idempotency, dedup veya duplicate gecen migrationlar duplicate korumayi SQL seviyesinde gostermelidir.
  • En az bir UNIQUE/CREATE UNIQUE INDEX tanimi zorunludur.
  • SQL INSERT INTO iceriyorsa ON CONFLICT davranisi zorunludur.

Soft delete ve audit zorunlulugu:

  • Dosya adinda audit, soft-delete veya delete-policy gecen migrationlar kritik tablolari hedeflemelidir.
  • SQL icinde soft-delete izi (is_deleted veya deleted_at) zorunludur.
  • SQL icinde kim-ne-zaman izi (created_by/updated_by veya changed_by/changed_at) zorunludur.

Kesin isimlendirme ozeti:

  • Tablo/kolon/type adlari: lower_snake_case ve ASCII
  • Constraint adlari: pk_, fk_, uq_, ck_
  • Index adlari: ix_, unique index icin uq_
  • SQL identifier adlarinda Turkce karakter, bosluk ve tire kullanilmaz.

Komutlar:

npm run lock:migration-checksums
npm run validate:migrations
npm run validate:drills

Tatbikat kanitlari:

  • Dizin: project-cinga/backend/migrations/drills/
  • Dosya formati: YYYY-MM-DD-backup-restore-rollback.md
  • Her kayitta Backup Kaniti, Restore Kaniti, Rollback Kaniti, Sonuc bolumleri zorunludur.
  • Son tatbikat en fazla 45 gun once yapilmis olmalidir.

Not:

  • Yeni migration eklendiginde once SQL dosyasini ekleyin.
  • Sonra checksum dosyasini kilitlemek icin npm run lock:migration-checksums calistirin.
  • CI ve lokal kontrol icin npm run validate:migrations kullanin.