Proje: Okul Platform · Hub: Okul Platform — Architecture

MediaService

app/Services/Media/MediaService.php

Akış

Geçici Upload (uploadTemporary)

  1. TEMP_PATH = 'temps' — Geçici depolama
  2. UploadTemporaryMediaDTO ile S3’e geçici yükle

Kalıcı Oluşturma (create)

  1. MediaScopeHandler::getScope(role) → Rol bazlı MediaScope
  2. Scope CanUploadMediaInterface implemente etmeli
  3. Aynı dosya adı varsa → generateSuffixedFilename() ile unique yap
  4. shouldQueue = trueCreateMediaJob::dispatch() (async)
  5. 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, VideoScope
  • SchoolAnnouncementMediaScope, CustomerAgreementScope
  • CommonMediaScope

Temp → Prod Path

S3: temps/{uuid}.{ext} → {final_path}/{uuid}.{ext}