import { HTTPNoBody } from '@fastify-modular/route'; import { pito } from 'pito'; import { NeedLogin } from '../defines'; import { BasketType, OrderState, PriceType, ProductKind } from '../enums'; // ========================================================================== export const ListUserBasketByOwnerOption = pito.Obj({ basketType: pito.Enums(BasketType), pageSize : pito.Opt(pito.Int({ minimum: 0, maximum: 100 })), pageNo : pito.Opt(pito.Int({ minimum: 1 })), }); export type ListUserBasketByOwnerOption = pito.Type; // ========================================================================== export const ListUserBasketByOwnerOutput = pito.Obj({ product: pito.Arr(pito.Obj({ productKind : pito.Enums(ProductKind), productId : pito.Num(), orderState : pito.Enums(OrderState), bldNm : pito.Str(), dongNm : pito.Str(), flrNo : pito.Num(), characteristic: pito.Str(), priceType : pito.Opt(pito.Enums(PriceType)), pricePrice : pito.Opt(pito.Num()), priceDeposit : pito.Opt(pito.Num()), sellOrderId : pito.Num(), buyOrderId : pito.Opt(pito.Num()), })), kapt: pito.Arr(pito.Obj({ addressId : pito.Str(), // 1레벨 단지 코드 statistics: pito.Arr( pito.Obj({ priceType : pito.Opt(pito.Enums(PriceType)), // | 거래유형 count : pito.Opt(pito.Num()), // | 해당 거래유형의 매물 개수 minPrice : pito.Opt(pito.Num()), // | 해당 거래유형의 최소가 maxPrice : pito.Opt(pito.Num()), // | 해당 거래유형의 최대가 minDeposit: pito.Opt(pito.Num()), // | 거래유형이 월세일 경우 보증금 최소가 (기본값 0) maxDeposit: pito.Opt(pito.Num()), // | 거래유형이 월세일 경우 보증금 최대가 (기본값 0) }), ), // 매매가, 전세가, 월세가 통계 })), }); export type ListUserBasketByOwnerOutput = pito.Type; // ========================================================================== export const ListUserBasketByOwner = HTTPNoBody('GET', '/api/v1/auth/user-basket', 'user') .query(ListUserBasketByOwnerOption) .response(ListUserBasketByOwnerOutput) .presets(NeedLogin) .build(); // ==========================================================================