게시글을 삭제하시겠습니까?
- 이 작업은 되돌릴 수 없습니다. 게시글이 영구적으로 삭제됩니다.
+ {props.message ? props.message : defaultMessage}
diff --git a/app/entities/series/api/series.ts b/app/entities/series/api/series.ts
index b9d38cb..f0af9c8 100644
--- a/app/entities/series/api/series.ts
+++ b/app/entities/series/api/series.ts
@@ -31,10 +31,13 @@ export const updateSeries = async (
title: string;
description: string;
thumbnailImage: string;
- order: string[];
- posts: string[];
}
) => {
const response = await axios.put(`/api/series/${slug}`, data);
return response.data;
};
+
+export const deleteSeries = async (slug: string) => {
+ const response = await axios.delete(`/api/series/${slug}`);
+ return response.data;
+};
diff --git a/app/entities/series/list/AdminSeriesList.tsx b/app/entities/series/list/AdminSeriesList.tsx
new file mode 100644
index 0000000..4cdd705
--- /dev/null
+++ b/app/entities/series/list/AdminSeriesList.tsx
@@ -0,0 +1,38 @@
+import { Series } from '@/app/types/Series';
+import React from 'react';
+import AdminSeriesListItem from '@/app/entities/series/list/AdminSeriesListItem';
+
+interface AdminSeriesListProps {
+ seriesList: Series[] | null | undefined;
+ loading: boolean;
+ handleUpdateSeries: (series: Series) => void;
+ handleDeleteClick: (slug: string) => void;
+}
+const AdminSeriesList = ({
+ loading,
+ seriesList,
+ handleUpdateSeries,
+ handleDeleteClick,
+}: AdminSeriesListProps) => {
+ if (loading) {
+ return
로딩 중...
;
+ }
+ if (!seriesList || seriesList.length === 0) {
+ return
등록된 시리즈가 없습니다.
;
+ }
+ return (
+
+ {loading && 로딩 중...
}
+ {seriesList.map((series, index) => (
+
+ ))}
+
+ );
+};
+
+export default AdminSeriesList;
diff --git a/app/entities/series/list/AdminSeriesListItem.tsx b/app/entities/series/list/AdminSeriesListItem.tsx
new file mode 100644
index 0000000..33860bc
--- /dev/null
+++ b/app/entities/series/list/AdminSeriesListItem.tsx
@@ -0,0 +1,80 @@
+import { Series } from '@/app/types/Series';
+import Image from 'next/image';
+import { FaBookOpen, FaCalendar } from 'react-icons/fa';
+import React from 'react';
+
+interface AdminSeriesListItemProps {
+ series: Series;
+ handleUpdateSeries: (series: Series) => void;
+ handleDeleteClick: (slug: string) => void;
+}
+
+const AdminSeriesListItem = ({
+ series,
+ handleUpdateSeries,
+ handleDeleteClick,
+}: AdminSeriesListItemProps) => {
+ return (
+
+
+ {series.thumbnailImage ? (
+
+ ) : (
+
+
+
+ )}
+
+
+
+ {series.title}
+
+
+
+
+
+ {new Date(series.date).toLocaleDateString()}
+
+
+
+ {series.posts.length || 0} posts
+
+
+
+
+ {series.description || 'No description available'}
+
+
+ handleUpdateSeries(series)}
+ className={'bg-green-200 rounded-2xl cursor-pointer px-4'}
+ >
+ 시리즈 수정
+
+ handleDeleteClick(series.slug)}
+ disabled={true}
+ className={
+ 'disabled:bg-neutral-200 disabled:cursor-not-allowed bg-red-200 rounded-2xl cursor-pointer px-4'
+ }
+ >
+ 시리즈 삭제
+
+
+
+
+ );
+};
+
+export default AdminSeriesListItem;