import { HTTPNoBody } from "@fastify-modular/route"; import { pito } from "pito"; import { NeedLogin } from "../defines"; import { PriceType, ProductKind } from "../enums"; import { AdStateType } from "../enums/ad-state"; import { PriceDefine } from "../types"; // ===================================================================================== export const ListSellAdOption = pito.Obj({ // where beforeStartAt : pito.Opt(pito.Date()), afterStartAt : pito.Opt(pito.Date()), beforeEndAt : pito.Opt(pito.Date()), afterEndAt : pito.Opt(pito.Date()), beforeRemainDayCnt: pito.Opt(pito.Int()), afterRemainDayCnt : pito.Opt(pito.Int()), fkProductId : pito.Opt(pito.Int()), productKind : pito.Opt(pito.Enums(ProductKind)), bldDongHoNm : pito.Opt(pito.Str()), priceType : pito.Opt(pito.Enums(PriceType)), beforePricePrice : pito.Opt(pito.Int()), afterPricePrice : pito.Opt(pito.Int()), adStateType : pito.Opt(pito.Enums(AdStateType)), // page pageSize: pito.Opt(pito.Int({ minimum: 0, maximum: 100 })), pageNo : pito.Opt(pito.Int({ minimum: 1 })), }); export type ListSellAdOption = pito.Type; // ===================================================================================== export const ListSellAdOutput = pito.Obj({ found: pito.Arr( pito.Obj({ sellId : pito.Int(), fkProductId : pito.Int(), productKind : pito.Enums(ProductKind), bldNm : pito.Str(), dongNm : pito.Str(), hoNm : pito.Str(), price : PriceDefine, startAt : pito.Opt(pito.Date()), endAt : pito.Opt(pito.Date()), remainDayCnt: pito.Opt(pito.Int()), adStateType : pito.Opt(pito.Enums(AdStateType)), }) ), }); export type ListSellAdOutput = pito.Type; // ===================================================================================== export const ListSellAd = HTTPNoBody("GET", "/api/v1/admin/sell-ad", "admin") .query(ListSellAdOption) .response(ListSellAdOutput) .presets(NeedLogin) .build(); // =====================================================================================