Ana içeriğe geç

Migration Yönetimi

Tüm tenant veritabanlarına toplu migration işlemi ve migration geçmişi sorgulama.

Base URL: /api/admin/tenants Yetkilendirme: Bearer Token (Admin)

Headers:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

POST /migrate-all

Tüm müşteri veritabanlarında migration çalıştırır. Her çalıştırma otomatik olarak geçmişe kaydedilir.

uyarı

Bu işlem tüm aktif tenant veritabanlarını etkiler. Production ortamında dikkatli kullanılmalıdır.

Response — 200 OK:

{
"success": true,
"data": {
"total": 3,
"success": 2,
"failed": 1,
"details": [
{
"customerId": "3fa85f64-...",
"customerName": "Acme Corp",
"status": "success",
"error": null
},
{
"customerId": "7ba92e31-...",
"customerName": "Beta Inc",
"status": "success",
"error": null
},
{
"customerId": "9cd14a82-...",
"customerName": "Gamma Ltd",
"status": "failed",
"error": "Connection refused"
}
]
}
}

MigrationResultResponse

AlanTipAçıklama
totalintToplam müşteri sayısı
successintBaşarılı migration sayısı
failedintBaşarısız migration sayısı
detailsMigrationDetailResponse[]Müşteri bazlı detaylar

MigrationDetailResponse

AlanTipAçıklama
customerIdGuidMüşteri ID
customerNamestringMüşteri adı
statusstringsuccess veya failed
errorstring?Hata mesajı (varsa)

GET /migration-history

Migration geçmişini sayfalanmış olarak listeler. Her kayıt bir migrate-all çağrısını temsil eder.

Query Parametreleri:

ParametreTipVarsayılanAçıklama
pageint1Sayfa numarası
pageSizeint10Sayfa başına kayıt

Response — 200 OK:

{
"success": true,
"data": {
"items": [
{
"id": "a1b2c3d4-...",
"startedAt": "2026-03-28T14:00:00Z",
"finishedAt": "2026-03-28T14:00:05Z",
"totalCount": 3,
"successCount": 2,
"failedCount": 1,
"triggeredBy": "berk.calik@kompanse.com",
"details": [
{
"customerId": "3fa85f64-...",
"customerName": "Acme Corp",
"databaseName": "kompanse_acme",
"status": "Success",
"appliedMigrations": "AddPagesModule, AddMigrationHistory",
"errorMessage": null,
"startedAt": "2026-03-28T14:00:00Z",
"finishedAt": "2026-03-28T14:00:02Z"
},
{
"customerId": "7ba92e31-...",
"customerName": "Beta Inc",
"databaseName": "kompanse_beta",
"status": "Success",
"appliedMigrations": null,
"errorMessage": null,
"startedAt": "2026-03-28T14:00:02Z",
"finishedAt": "2026-03-28T14:00:03Z"
},
{
"customerId": "9cd14a82-...",
"customerName": "Gamma Ltd",
"databaseName": "kompanse_gamma",
"status": "Failed",
"appliedMigrations": null,
"errorMessage": "Connection refused",
"startedAt": "2026-03-28T14:00:03Z",
"finishedAt": "2026-03-28T14:00:05Z"
}
]
}
],
"page": 1,
"pageSize": 10,
"totalCount": 5,
"totalPages": 1
}
}

MigrationRunResponse

AlanTipAçıklama
idGuidMigration çalıştırma ID
startedAtDateTimeBaşlangıç zamanı
finishedAtDateTime?Bitiş zamanı
totalCountintToplam müşteri sayısı
successCountintBaşarılı sayısı
failedCountintBaşarısız sayısı
triggeredBystringİşlemi tetikleyen admin e-posta adresi
detailsMigrationRunDetailResponse[]Müşteri bazlı detaylar

MigrationRunDetailResponse

AlanTipAçıklama
customerIdGuidMüşteri ID
customerNamestringMüşteri adı
databaseNamestringVeritabanı adı
statusstringSuccess veya Failed
appliedMigrationsstring?Uygulanan migration isimleri (virgülle ayrılmış)
errorMessagestring?Hata mesajı (varsa)
startedAtDateTimeMüşteri migration başlangıcı
finishedAtDateTime?Müşteri migration bitişi
ipucu

appliedMigrations alanı null ise o müşteri DB'sinde bekleyen migration yoktu demektir (zaten güncel).


GET /migration-history/{id}

Belirli bir migration çalıştırmasının detayını getirir.

Response — 200 OK: MigrationRunResponse objesi döner.


Olası Hatalar

KodDurum
401Token eksik veya geçersiz
403Admin yetkisi yok
404Migration kaydı bulunamadı