97 lines
2.4 KiB
TypeScript
97 lines
2.4 KiB
TypeScript
import { z } from "zod";
|
|
import type { PageableList, PageableParams } from "@/shared/model";
|
|
|
|
export const BOARD_TYPE = {
|
|
BBSNORMAL: "BBSNORMAL",
|
|
BBSFAQ: "BBSFAQ",
|
|
BBSIMAGE: "BBSIMAGE",
|
|
BBSMOVIE: "BBSMOVIE",
|
|
} as const;
|
|
|
|
export type BoardType = (typeof BOARD_TYPE)[keyof typeof BOARD_TYPE];
|
|
|
|
export interface BoardParams extends PageableParams {
|
|
keywordType?: string;
|
|
keyword?: string;
|
|
bbsId?: number;
|
|
bbsTypeCd?: string;
|
|
bbsNm?: string;
|
|
bbsExpln?: string;
|
|
rfrncUseYn?: string;
|
|
atflUseYn?: string;
|
|
atflMaxCnt?: number;
|
|
atflMaxFileSz?: number;
|
|
ansUseYn?: string;
|
|
cmntUseYn?: string;
|
|
dgstfnEvlUseYn?: string;
|
|
smsUseYn?: string;
|
|
upndFixUseYn?: string;
|
|
pstgPrdUseYn?: string;
|
|
popupUseYn?: string;
|
|
delYn?: string;
|
|
}
|
|
|
|
export interface BoardPopupParams extends PageableParams {
|
|
bbsNm?: string;
|
|
}
|
|
|
|
export interface Board {
|
|
bbsId: number;
|
|
bbsTypeCd: string;
|
|
bbsTypeNm: string;
|
|
bbsNm: string;
|
|
bbsExpln: string;
|
|
rfrncUseYn: string;
|
|
atflUseYn: string;
|
|
atflMaxCnt: number;
|
|
atflMaxFileSz: number;
|
|
ansUseYn: string;
|
|
ansUseAuthrt: string;
|
|
cmntUseYn: string;
|
|
dgstfnEvlUseYn: string;
|
|
smsUseYn: string;
|
|
upndFixUseYn: string;
|
|
pstgPrdUseYn: string;
|
|
popupUseYn: string;
|
|
delYn: string;
|
|
useYn: string;
|
|
mdfcnDt: string;
|
|
mdfrNm: string;
|
|
}
|
|
|
|
export interface BoardPopup extends Board {
|
|
pstCnt: number;
|
|
}
|
|
|
|
export const boardFormSchema = z.object({
|
|
bbsTypeCd: z.string(),
|
|
bbsNm: z.string(),
|
|
bbsExpln: z.string(),
|
|
rfrncUseYn: z.string(),
|
|
atflUseYn: z.string(),
|
|
atflMaxCnt: z.number().nullish(),
|
|
atflMaxFileSz: z.number().nullish(),
|
|
ansUseYn: z.string(),
|
|
ansUseAuthrt: z.string().nullish(),
|
|
cmntUseYn: z.string(),
|
|
dgstfnEvlUseYn: z.string(),
|
|
smsUseYn: z.string(),
|
|
upndFixUseYn: z.string(),
|
|
pstgPrdUseYn: z.string(),
|
|
popupUseYn: z.string(),
|
|
useYn: z.string(),
|
|
});
|
|
|
|
export type BoardList = PageableList<Board>;
|
|
export type BoardPopupList = PageableList<BoardPopup>;
|
|
export type BoardFormData = z.infer<typeof boardFormSchema>;
|
|
|
|
export interface BoardService {
|
|
getBoardList: (params: BoardParams) => Promise<BoardList>;
|
|
getBoardPopupList: (params: BoardPopupParams) => Promise<BoardPopupList>;
|
|
getBoardInfo: (bbsId: string) => Promise<Board>;
|
|
createBoard: (data: BoardFormData) => Promise<Board>;
|
|
updateBoard: (bbsId: string, data: BoardFormData) => Promise<Board>;
|
|
deleteBoard: (bbsId: string) => Promise<void>;
|
|
}
|