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-uniqueifadesi 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 icinmigrations/explain/<ayni-dosya-adi>.mdexplain raporu zorunludur. - Rapor
BEFORE PLANveAFTER PLANbolumlerini 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,CHECKkullanimi migration seviyesinde zorunludur.
Idempotency ve duplicate onleme kurali:
- Dosya adinda
idempotency,dedupveyaduplicategecen migrationlar duplicate korumayi SQL seviyesinde gostermelidir. - En az bir
UNIQUE/CREATE UNIQUE INDEXtanimi zorunludur. - SQL
INSERT INTOiceriyorsaON CONFLICTdavranisi zorunludur.
Soft delete ve audit zorunlulugu:
- Dosya adinda
audit,soft-deleteveyadelete-policygecen migrationlar kritik tablolari hedeflemelidir. - SQL icinde soft-delete izi (
is_deletedveyadeleted_at) zorunludur. - SQL icinde kim-ne-zaman izi (
created_by/updated_byveyachanged_by/changed_at) zorunludur.
Kesin isimlendirme ozeti:
- Tablo/kolon/type adlari:
lower_snake_caseve ASCII - Constraint adlari:
pk_,fk_,uq_,ck_ - Index adlari:
ix_, unique index icinuq_ - 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,Sonucbolumleri 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-checksumscalistirin. - CI ve lokal kontrol icin
npm run validate:migrationskullanin.