Proje: Okul Platform · Hub: Okul Platform — Architecture
MediaService
app/Services/Media/MediaService.php
Akış
Geçici Upload (uploadTemporary)
TEMP_PATH = 'temps'— Geçici depolamaUploadTemporaryMediaDTOile S3’e geçici yükle
Kalıcı Oluşturma (create)
MediaScopeHandler::getScope(role)→ Rol bazlı MediaScope- Scope
CanUploadMediaInterfaceimplemente etmeli - Aynı dosya adı varsa →
generateSuffixedFilename()ile unique yap shouldQueue = true→CreateMediaJob::dispatch()(async)shouldQueue = false→ Sync oluştur
Taşıma (move)
MoveMediaJob — Geçici → kalıcı konum
Silme
DeleteMediaJob — Async silme
Sıralama
SortMediaDTO — Medya sıra güncelleme
Scope Interface’leri
CanUploadMediaInterface — Yükleme destekler
CanDeleteMediaInterface — Silme destekler
CanSortMediaInterface — Sıralama destekler
DeletePipeInterface — Delete pipe'ı
MovePipeInterface — Move pipe'ı
UploadPipeInterface — Upload pipe'ı
Medya İşleme
Intervention\Image — Görsel boyutlandırma/işleme
Bus::chain() — Job zinciri (sıralı işler)
Scope’lar
Her MediaRoleIdType için ayrı scope:
SchoolMediaScope,SchoolLogoScope,VideoScopeSchoolAnnouncementMediaScope,CustomerAgreementScopeCommonMediaScope
Temp → Prod Path
S3: temps/{uuid}.{ext} → {final_path}/{uuid}.{ext}
Related
- api-media-system — MediaRoleIdType ve scope listesi
- api-queue-jobs — Media job’ları