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
- Semua mutasi domain yang melibatkan media harus lewat
app/Actions/**. - Sinkronisasi
curator_media_usagesdilakukan eksplisit di Action domain. - 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\CreatePostActionApp\Actions\Users\CreateUserAction
Update
- Action domain update record.
- Jika field media berubah (atau dikirim), panggil
SyncMediaUsageAction.
Contoh:
App\Actions\Posts\UpdatePostActionApp\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->CreatePostActionEditPost->UpdatePostActionDeleteActionPost ->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\CuratorMediaUsagesActionresources/views/filament/media/used-by-modal.blade.php