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": "[email protected]",
"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ı