feat: add like and save for playlist

This commit is contained in:
2026-05-30 18:17:27 +03:30
parent 8923810df3
commit 230bfc2ad8
4 changed files with 26 additions and 12 deletions
+7 -5
View File
@@ -12,7 +12,7 @@ class LikeController extends Controller
public function like(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media',
'type' => 'required|string|in:music,media,playlist',
'id' => 'required|integer',
]);
@@ -39,7 +39,7 @@ public function like(Request $request)
public function unlike(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media',
'type' => 'required|string|in:music,media,playlist',
'id' => 'required|integer',
]);
@@ -66,7 +66,7 @@ public function unlike(Request $request)
public function toggleLike(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media',
'type' => 'required|string|in:music,media,playlist',
'id' => 'required|integer',
]);
@@ -110,6 +110,7 @@ public function myLikedItems(Request $request)
'types' => [
'music' => 'App\\Models\\Music',
'media' => 'App\\Models\\Media',
'playlist' => 'App\\Models\\MusicPlaylist',
]
]);
// Transform the response
@@ -167,7 +168,7 @@ public function myLikedItems(Request $request)
public function checkLiked(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media',
'type' => 'required|string|in:music,media,playlist',
'id' => 'required|integer',
]);
@@ -227,8 +228,9 @@ private function getModelClass($type)
$models = [
'music' => \App\Models\Music::class,
'media' => \App\Models\Media::class,
'playlist' => \App\Models\MusicPlaylist::class,
];
return $models[$type] ?? null;
}
}
@@ -81,11 +81,15 @@ public function show($id)
'total_musics' => $playlist->musics->count(),
'total_duration' => $playlist->total_duration,
'total_comments' => $playlist->comments_count,
'total_likes' => $playlist->likes_count,
'total_saves' => $playlist->saved_count,
],
'user_interaction' => [
'has_commented' => $playlist->has_user_commented,
'user_comment' => $playlist->user_comment,
'user_comment_id' => $playlist->user_comment_id,
'has_liked' => $playlist->is_liked,
'has_saved' => $playlist->is_saved,
],
'comments' => $comments,
]);
+7 -5
View File
@@ -13,7 +13,7 @@ class SaveController extends Controller
public function save(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media,breathing-template',
'type' => 'required|string|in:music,media,breathing-template,playlist',
'id' => 'required|integer',
]);
@@ -40,7 +40,7 @@ public function save(Request $request)
public function unsave(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media,breathing-template',
'type' => 'required|string|in:music,media,breathing-template,playlist',
'id' => 'required|integer',
]);
@@ -67,7 +67,7 @@ public function unsave(Request $request)
public function toggleSave(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media,breathing-template',
'type' => 'required|string|in:music,media,breathing-template,playlist',
'id' => 'required|integer',
]);
@@ -112,6 +112,7 @@ public function mySavedItems(Request $request)
'music' => 'App\\Models\\Music',
'media' => 'App\\Models\\Media',
'breathing-template' => 'App\\Models\\BreathingTemplate',
'playlist' => 'App\\Models\\MusicPlaylist',
]
]);
}
@@ -121,7 +122,7 @@ public function mySavedItems(Request $request)
public function checkSaved(Request $request)
{
$request->validate([
'type' => 'required|string|in:music,media,breathing-template',
'type' => 'required|string|in:music,media,breathing-template,playlist',
'id' => 'required|integer',
]);
@@ -151,8 +152,9 @@ private function getModelClass($type)
'music' => \App\Models\Music::class,
'media' => \App\Models\Media::class,
'breathing-template' => \App\Models\BreathingTemplate::class,
'playlist' => \App\Models\MusicPlaylist::class,
];
return $models[$type] ?? null;
}
}
+8 -2
View File
@@ -6,9 +6,11 @@
use Illuminate\Database\Eloquent\Relations\BelongsTo; // ← Add this
use Illuminate\Database\Eloquent\Relations\HasMany; // ← Add this
use App\Traits\HasComments; // Add this
use App\Traits\HasLikes;
use App\Traits\HasSaves;
class MusicPlaylist extends Model
{
use HasComments;
use HasComments, HasLikes, HasSaves;
protected $table = 'music_playlists';
protected $fillable = [
@@ -23,7 +25,11 @@ class MusicPlaylist extends Model
'comments_count',
'has_user_commented',
'user_comment',
'user_comment_id'
'user_comment_id',
'is_liked',
'likes_count',
'is_saved',
'saved_count'
];
public function category(): BelongsTo
{