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
| Alan | Tip | Açıklama |
|---|---|---|
total | int | Toplam müşteri sayısı |
success | int | Başarılı migration sayısı |
failed | int | Başarısız migration sayısı |
details | MigrationDetailResponse[] | Müşteri bazlı detaylar |
MigrationDetailResponse
| Alan | Tip | Açıklama |
|---|---|---|
customerId | Guid | Müşteri ID |
customerName | string | Müşteri adı |
status | string | success veya failed |
error | string? | 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:
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
page | int | 1 | Sayfa numarası |
pageSize | int | 10 | Sayfa 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
| Alan | Tip | Açıklama |
|---|---|---|
id | Guid | Migration çalıştırma ID |
startedAt | DateTime | Başlangıç zamanı |
finishedAt | DateTime? | Bitiş zamanı |
totalCount | int | Toplam müşteri sayısı |
successCount | int | Başarılı sayısı |
failedCount | int | Başarısız sayısı |
triggeredBy | string | İşlemi tetikleyen admin e-posta adresi |
details | MigrationRunDetailResponse[] | Müşteri bazlı detaylar |
MigrationRunDetailResponse
| Alan | Tip | Açıklama |
|---|---|---|
customerId | Guid | Müşteri ID |
customerName | string | Müşteri adı |
databaseName | string | Veritabanı adı |
status | string | Success veya Failed |
appliedMigrations | string? | Uygulanan migration isimleri (virgülle ayrılmış) |
errorMessage | string? | Hata mesajı (varsa) |
startedAt | DateTime | Müşteri migration başlangıcı |
finishedAt | DateTime? | 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
| Kod | Durum |
|---|---|
401 | Token eksik veya geçersiz |
403 | Admin yetkisi yok |
404 | Migration kaydı bulunamadı |