2026-01-09 21:56:32 +09:00
|
|
|
/**
|
2026-01-23 10:29:30 +09:00
|
|
|
* 앨범 API
|
2026-01-09 21:56:32 +09:00
|
|
|
*/
|
2026-01-23 10:29:30 +09:00
|
|
|
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/client';
|
2026-01-09 21:56:32 +09:00
|
|
|
|
2026-01-23 10:29:30 +09:00
|
|
|
// ==================== 공개 API ====================
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 앨범 목록 조회
|
|
|
|
|
*/
|
2026-01-09 21:56:32 +09:00
|
|
|
export async function getAlbums() {
|
2026-01-23 10:29:30 +09:00
|
|
|
return fetchApi('/albums');
|
2026-01-09 21:56:32 +09:00
|
|
|
}
|
|
|
|
|
|
2026-01-23 10:29:30 +09:00
|
|
|
/**
|
|
|
|
|
* 앨범 상세 조회 (ID)
|
|
|
|
|
*/
|
2026-01-09 21:56:32 +09:00
|
|
|
export async function getAlbum(id) {
|
2026-01-23 10:29:30 +09:00
|
|
|
return fetchApi(`/albums/${id}`);
|
2026-01-09 21:56:32 +09:00
|
|
|
}
|
|
|
|
|
|
2026-01-23 10:29:30 +09:00
|
|
|
/**
|
|
|
|
|
* 앨범 상세 조회 (이름)
|
|
|
|
|
*/
|
2026-01-09 22:06:56 +09:00
|
|
|
export async function getAlbumByName(name) {
|
2026-01-23 10:29:30 +09:00
|
|
|
return fetchApi(`/albums/by-name/${encodeURIComponent(name)}`);
|
2026-01-09 22:06:56 +09:00
|
|
|
}
|
|
|
|
|
|
2026-01-23 10:29:30 +09:00
|
|
|
/**
|
|
|
|
|
* 앨범 사진 조회
|
|
|
|
|
*/
|
2026-01-09 21:56:32 +09:00
|
|
|
export async function getAlbumPhotos(albumId) {
|
2026-01-23 10:29:30 +09:00
|
|
|
return fetchApi(`/albums/${albumId}/photos`);
|
2026-01-09 21:56:32 +09:00
|
|
|
}
|
2026-01-10 00:05:57 +09:00
|
|
|
|
2026-01-23 10:29:30 +09:00
|
|
|
/**
|
|
|
|
|
* 앨범 트랙 조회
|
|
|
|
|
*/
|
2026-01-10 00:05:57 +09:00
|
|
|
export async function getAlbumTracks(albumId) {
|
2026-01-23 10:29:30 +09:00
|
|
|
return fetchApi(`/albums/${albumId}/tracks`);
|
2026-01-10 00:05:57 +09:00
|
|
|
}
|
2026-01-12 17:50:48 +09:00
|
|
|
|
2026-01-23 10:29:30 +09:00
|
|
|
/**
|
|
|
|
|
* 트랙 상세 조회 (앨범명, 트랙명으로)
|
|
|
|
|
*/
|
2026-01-12 17:50:48 +09:00
|
|
|
export async function getTrack(albumName, trackTitle) {
|
|
|
|
|
return fetchApi(
|
2026-01-23 10:29:30 +09:00
|
|
|
`/albums/by-name/${encodeURIComponent(albumName)}/track/${encodeURIComponent(trackTitle)}`
|
2026-01-12 17:50:48 +09:00
|
|
|
);
|
|
|
|
|
}
|
2026-01-23 10:29:30 +09:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 앨범 티저 조회
|
|
|
|
|
*/
|
|
|
|
|
export async function getAlbumTeasers(albumId) {
|
|
|
|
|
return fetchApi(`/albums/${albumId}/teasers`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ==================== 어드민 API ====================
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [Admin] 앨범 생성
|
|
|
|
|
*/
|
|
|
|
|
export async function createAlbum(formData) {
|
|
|
|
|
return fetchFormData('/albums', formData, 'POST');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [Admin] 앨범 수정
|
|
|
|
|
*/
|
|
|
|
|
export async function updateAlbum(id, formData) {
|
|
|
|
|
return fetchFormData(`/albums/${id}`, formData, 'PUT');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [Admin] 앨범 삭제
|
|
|
|
|
*/
|
|
|
|
|
export async function deleteAlbum(id) {
|
|
|
|
|
return fetchAuthApi(`/albums/${id}`, { method: 'DELETE' });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [Admin] 앨범 사진 업로드
|
|
|
|
|
*/
|
|
|
|
|
export async function uploadAlbumPhotos(albumId, formData) {
|
|
|
|
|
return fetchFormData(`/albums/${albumId}/photos`, formData, 'POST');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [Admin] 앨범 사진 삭제
|
|
|
|
|
*/
|
|
|
|
|
export async function deleteAlbumPhoto(albumId, photoId) {
|
|
|
|
|
return fetchAuthApi(`/albums/${albumId}/photos/${photoId}`, { method: 'DELETE' });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [Admin] 앨범 티저 삭제
|
|
|
|
|
*/
|
|
|
|
|
export async function deleteAlbumTeaser(albumId, teaserId) {
|
|
|
|
|
return fetchAuthApi(`/albums/${albumId}/teasers/${teaserId}`, { method: 'DELETE' });
|
|
|
|
|
}
|