58 lines
1.4 KiB
TypeScript
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>;
|
|
}
|