- /api/admin/* + /api/* 분리 구조를 /api/*로 통합 - GET 요청은 공개, POST/PUT/DELETE는 인증 필요로 변경 - albums 라우트를 기능별 파일로 분리 (index, photos, teasers) - 프론트엔드 API 호출 경로 업데이트 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
/**
|
|
* 어드민 앨범 관리 API
|
|
*/
|
|
import { fetchAdminApi, fetchAdminFormData } from "../index";
|
|
|
|
// 앨범 목록 조회
|
|
export async function getAlbums() {
|
|
return fetchAdminApi("/api/albums");
|
|
}
|
|
|
|
// 앨범 상세 조회
|
|
export async function getAlbum(id) {
|
|
return fetchAdminApi(`/api/albums/${id}`);
|
|
}
|
|
|
|
// 앨범 생성
|
|
export async function createAlbum(formData) {
|
|
return fetchAdminFormData("/api/albums", formData, "POST");
|
|
}
|
|
|
|
// 앨범 수정
|
|
export async function updateAlbum(id, formData) {
|
|
return fetchAdminFormData(`/api/albums/${id}`, formData, "PUT");
|
|
}
|
|
|
|
// 앨범 삭제
|
|
export async function deleteAlbum(id) {
|
|
return fetchAdminApi(`/api/albums/${id}`, { method: "DELETE" });
|
|
}
|
|
|
|
// 앨범 사진 목록 조회
|
|
export async function getAlbumPhotos(albumId) {
|
|
return fetchAdminApi(`/api/albums/${albumId}/photos`);
|
|
}
|
|
|
|
// 앨범 사진 업로드
|
|
export async function uploadAlbumPhotos(albumId, formData) {
|
|
return fetchAdminFormData(
|
|
`/api/albums/${albumId}/photos`,
|
|
formData,
|
|
"POST"
|
|
);
|
|
}
|
|
|
|
// 앨범 사진 삭제
|
|
export async function deleteAlbumPhoto(albumId, photoId) {
|
|
return fetchAdminApi(`/api/albums/${albumId}/photos/${photoId}`, {
|
|
method: "DELETE",
|
|
});
|
|
}
|
|
|
|
// 앨범 티저 목록 조회
|
|
export async function getAlbumTeasers(albumId) {
|
|
return fetchAdminApi(`/api/albums/${albumId}/teasers`);
|
|
}
|
|
|
|
// 앨범 티저 삭제
|
|
export async function deleteAlbumTeaser(albumId, teaserId) {
|
|
return fetchAdminApi(`/api/albums/${albumId}/teasers/${teaserId}`, {
|
|
method: "DELETE",
|
|
});
|
|
}
|