feat: add image upload trait
This commit is contained in:
@@ -5,10 +5,12 @@
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\MusicPlaylist;
|
||||
use App\Models\Music;
|
||||
use App\Traits\HandlesImageUpload;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class MusicController extends Controller
|
||||
{
|
||||
use HandlesImageUpload;
|
||||
|
||||
// Add this new method to your MusicController
|
||||
public function getAllMusic()
|
||||
@@ -135,6 +137,7 @@ public function store(Request $request)
|
||||
'file' => 'required|mimes:mp3,wav,ogg,flac|max:20971520',
|
||||
'type' => 'nullable|in:public,private',
|
||||
'image_id' => 'nullable|exists:images,id',
|
||||
'image' => 'nullable|image|max:8192',
|
||||
'playlist_id' => 'nullable|exists:music_playlists,id', // single (backward compatible)
|
||||
'playlist_ids' => 'nullable|array', // multiple
|
||||
'playlist_ids.*' => 'integer|exists:music_playlists,id',
|
||||
@@ -165,13 +168,16 @@ public function store(Request $request)
|
||||
], 500);
|
||||
}
|
||||
|
||||
// An uploaded image file takes precedence over a provided image_id.
|
||||
$imageId = $this->uploadedImageId($request) ?? ($data['image_id'] ?? null);
|
||||
|
||||
$music = Music::create([
|
||||
'user_id' => auth()->id(),
|
||||
'title' => $data['title'],
|
||||
'artist' => $data['artist'] ?? null,
|
||||
'file_path' => $path,
|
||||
'type' => $data['type'] ?? 'private',
|
||||
'image_id' => $data['image_id'] ?? null,
|
||||
'image_id' => $imageId,
|
||||
'duration' => $data['duration'] ?? null, // Store as string
|
||||
'is_active' => true,
|
||||
]);
|
||||
@@ -234,6 +240,7 @@ public function update(Request $request, $id)
|
||||
'type' => 'nullable|in:public,private',
|
||||
'file' => 'nullable|mimes:mp3,wav,ogg,flac|max:20971520',
|
||||
'image_id' => 'nullable|exists:images,id',
|
||||
'image' => 'nullable|image|max:8192',
|
||||
'duration' => 'nullable|integer|min:1',
|
||||
'is_active' => 'nullable|boolean',
|
||||
]);
|
||||
@@ -245,8 +252,15 @@ public function update(Request $request, $id)
|
||||
$music->file_path = $path;
|
||||
}
|
||||
|
||||
// Update only provided fields
|
||||
$music->fill($data);
|
||||
// Update only provided fields (drop the raw file input from mass-assign).
|
||||
$music->fill(collect($data)->except('image')->toArray());
|
||||
|
||||
// An uploaded image file takes precedence over a provided image_id.
|
||||
$uploadedImageId = $this->uploadedImageId($request);
|
||||
if ($uploadedImageId !== null) {
|
||||
$music->image_id = $uploadedImageId;
|
||||
}
|
||||
|
||||
$music->save();
|
||||
|
||||
return response()->json([
|
||||
|
||||
Reference in New Issue
Block a user