import { HTTPNoBody } from "@fastify-modular/route"; import { pito } from "pito"; import { NeedLogin } from "../defines"; import { ProductKind } from "../enums"; import { AdminExpensesDefine, MoveInDefine, PriceDefine, UserDefine } from "../types"; import { RltrOffcDefine } from "../types/rltr-offc"; // ===================================================================================== export const FindProductParam = pito.Obj({ id: pito.Num(), }); export type FindProductParam = pito.Type; // ===================================================================================== export const FindProductOption = pito.Obj({}); export type FindProductOption = pito.Type; // ===================================================================================== export const FindProductInput = pito.Obj({}); export type FindProductInput = pito.Type; // ===================================================================================== export const FindProductOutput = pito.Obj({ // 매물 정보 tilte: pito.Obj({ prodId : pito.Opt(pito.Int()), productKind: pito.Opt(pito.Enums(ProductKind)), bldNm : pito.Opt(pito.Str()), dongNm : pito.Opt(pito.Str()), hoNm : pito.Opt(pito.Str()), }), product: pito.Obj({ createdAt : pito.Opt(pito.Date()), prodId : pito.Opt(pito.Int()), // 방향 flrNo : pito.Opt(pito.Int()), // 해당층 totFlrCnt : pito.Opt(pito.Int()), // 총층 adminExpenses: AdminExpensesDefine, heatType : pito.Opt(pito.Str()), // 난방 hhldCnt : pito.Opt(pito.Int()), // 세대수 moveIn : MoveInDefine, }), productDetail: pito.Obj({ pareaType: pito.Opt(pito.Str()), // 타입 sarea : pito.Opt(pito.Int()), // 공급면적 parea : pito.Opt(pito.Int()), // 전용면적 pareaRate: pito.Opt(pito.Int()), // 전용율 // 방수 // 욕실수 }), // 중개업소 정보 rltrOffc: RltrOffcDefine, // 중개사 정보 seller : UserDefine, // 실소유주 정보 owner : UserDefine, // 주문정보 price : pito.Arr( pito.Opt( pito.Obj({ sellId: pito.Int(), price : PriceDefine, }) ) ), }); export type FindProductOutput = pito.Type; // ===================================================================================== export const FindProduct = HTTPNoBody( "GET", "/api/v1/admin/product/:id", "admin" ) .params(FindProductParam) .query(FindProductOption) .response(FindProductOutput) .presets(NeedLogin) .build(); // =====================================================================================