Files
Musify/web-player/src/lib/server/actions/playlist.ts
T

47 lines
1.5 KiB
TypeScript

import { fail } from '@sveltejs/kit';
import { formString } from '$lib/server/forms/fields';
import { authedAction } from '$lib/server/actions/authedAction';
export const addTrackAction = authedAction(async ({ api, form, params }) => {
const playlistId = formString(form, 'playlistId') || (params.id ?? '');
const trackId = formString(form, 'trackId');
if (!playlistId || !trackId) {
return fail(400, { message: 'Faltan datos de la canción.' });
}
const { error, response } = await api.POST('/playlists/{playlistId}/tracks', {
params: { path: { playlistId } },
body: { trackId }
});
if (error) {
if (response?.status === 409) {
return fail(409, { message: 'La canción ya está en esa playlist.', trackId });
}
return fail(502, { message: 'No se pudo añadir la canción.', trackId });
}
return { added: true, trackId, playlistId };
});
export const addAlbumToPlaylistAction = authedAction(async ({ api, form, params }) => {
const playlistId = formString(form, 'playlistId') || (params.id ?? '');
const albumId = formString(form, 'albumId');
if (!playlistId || !albumId) {
return fail(400, { message: 'Faltan datos del álbum.' });
}
const { data, error } = await api.POST('/playlists/{playlistId}/albums/{albumId}', {
params: { path: { playlistId, albumId } }
});
if (error || !data) {
return fail(502, { message: 'No se pudo añadir el álbum.', albumId });
}
const added = Number(data.addedCount);
return { addedAlbum: true, albumId, playlistId, added };
});