import { HTTPNoBody } from '@fastify-modular/route'; import { pito } from 'pito'; import { NeedLogin } from '../defines'; import { AdStateType, PriceType } from '../enums'; import { UserInformationDefine } from '../types'; export const ListSellAdByUserOption = pito.Obj({ filterTitle : pito.Opt(pito.Str()), filterAdStateType: pito.Opt(pito.Enums(AdStateType)), filterPriceType : pito.Opt(pito.Enums(PriceType)), pageSize : pito.Opt(pito.Int({ minimum: 0, maximum: 100 })), pageNo : pito.Opt(pito.Int({ minimum: 1 })), // offset: pito.Int({ minimum: 0 }), // limit: pito.Int({ minimum: 1, maximum: 100 }), }); export type ListSellAdByUserOption = pito.Type; export const ListSellAdByUserOutput = pito.Obj({ found: pito.Arr( pito.Obj({ sellId: pito.Num(), title : pito.Str(), bldNm : pito.Str(), dongNm: pito.Str(), hoNm : pito.Str(), priceType : pito.Enums(PriceType), adStateType: pito.Enums(AdStateType), ad: pito.Opt(pito.Obj({ pmnt: pito.Obj({ id : pito.UUID(), user : UserInformationDefine, price : pito.Num(), createdAt: pito.Datetime(), payedAt : pito.Opt(pito.Datetime()), }), startAt: pito.Datetime(), endAt : pito.Datetime(), })), }) ), }); export type ListSellAdByUserOutput = pito.Type; export const ListSellAdByUser = HTTPNoBody( "GET", "/api/v1/product/sell-ad/user", "ad" ) .query(ListSellAdByUserOption) .response(ListSellAdByUserOutput) .presets(NeedLogin) .build();