Files
frontend/apps/cs/src/pages/banner/model/banner-interface.ts
T

58 lines
1.4 KiB
TypeScript

import { z } from "zod";
import type { PageableList, PageableParams } from "@/shared/model";
export const BANNER_TYPE = {
BNRMAIN: "BNRMAIN",
BNRFTER: "BNRFTER",
} as const;
export type BannerType = (typeof BANNER_TYPE)[keyof typeof BANNER_TYPE];
export interface BannerParams extends PageableParams {
bnrTypeCd?: BannerType;
bnrTtl?: string;
useYn?: string;
}
export interface Banner {
bnrSn: number;
bnrTypeCd: BannerType;
bnrTypeNm: string;
bnrTtl: string;
lnkgUrlAddr: string;
useYn: string;
atflCd: string;
mdfcnDt: string;
mdfr: string;
mdfrNm: string;
}
export interface BannerInfo extends Omit<Banner, "mdfr"> {
bnrExpln: string;
newWndwYn: string;
atflCd: string;
regDt: string;
rgTrNm: string;
}
export const bannerFormSchema = z.object({
bnrTypeCd: z.string(),
bnrTtl: z.string(),
bnrExpln: z.string().nullish(),
lnkgUrlAddr: z.string().nullish(),
newWndwYn: z.string(),
atflCd: z.string().nullish(),
useYn: z.string(),
});
export type BannerFormData = z.infer<typeof bannerFormSchema>;
export type BannerList = PageableList<Banner>;
export interface BannerService {
getBannerList: (params: BannerParams) => Promise<BannerList>;
getBannerInfo: (bnrSn: string) => Promise<BannerInfo>;
createBanner: (data: BannerFormData) => Promise<void>;
updateBanner: (bnrSn: string, data: BannerFormData) => Promise<void>;
deleteBanner: (bnrSn: string) => Promise<void>;
}