Lewati ke konten utama

Media Action Orchestration (Filament + API Ready)

Dokumen ini menjelaskan pola final agar relasi media Curator tetap konsisten tanpa observer dan siap dipakai ulang di API.

Prinsip Utama

  1. Semua mutasi domain yang melibatkan media harus lewat app/Actions/**.
  2. Sinkronisasi curator_media_usages dilakukan eksplisit di Action domain.
  3. Observer tidak dipakai untuk sync usage agar flow mudah dilacak.

Pola Implementasi

Create

  • Action domain membuat record.
  • Jika field media ada, panggil SyncMediaUsageAction.

Contoh:

  • App\Actions\Posts\CreatePostAction
  • App\Actions\Users\CreateUserAction

Update

  • Action domain update record.
  • Jika field media berubah (atau dikirim), panggil SyncMediaUsageAction.

Contoh:

  • App\Actions\Posts\UpdatePostAction
  • App\Actions\Users\UpdateUserAction

Delete

  • Action domain delete record.
  • Sebelum delete, panggil DeleteAllMediaUsagesAction.

Contoh:

  • App\Actions\Posts\DeletePostAction

Integrasi Filament

Filament page/resource tidak melakukan logika media langsung.

Filament hanya memanggil Action domain:

  • CreatePost -> CreatePostAction
  • EditPost -> UpdatePostAction
  • DeleteAction Post -> DeletePostAction

Dengan pola ini, endpoint API nanti tinggal memanggil Action yang sama.

Audit Pemakaian Media

Fitur “Dipakai Di Mana” di edit media Curator membaca curator_media_usages melalui:

  • App\Actions\Media\ListCuratorMediaUsagesAction

UI:

  • App\Filament\Curator\Actions\CuratorMediaUsagesAction
  • resources/views/filament/media/used-by-modal.blade.php