UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

108 lines (107 loc) 3.38 kB
import type { Connection } from 'mongoose'; import * as factory from '../factory'; type IProjection4searchWithUnwoundAcceptedOffers = { [key in keyof factory.order.IOrder]?: 1; } & { _id?: 0 | 1; }; type IDistinctField = 'acceptedOffers.id' | 'acceptedOffers.itemOffered.reservationNumber' | 'acceptedOffers.itemOffered.reservationFor.id' | 'acceptedOffers.itemOffered.issuedThrough.id' | 'acceptedOffers.itemOffered.typeOf' | 'acceptedOffers.serialNumber' | 'acceptedOffers.offeredThrough.identifier' | 'acceptedOffers.itemOffered.reservationFor.superEvent.location.branchCode' | 'acceptedOffers.itemOffered.object.pendingTransaction.transactionNumber'; type IAcceptedOffer = factory.order.IAcceptedOffer<factory.order.IItemOffered>; interface ISearchSlicedAcceptedOffersResult { acceptedOffers: IAcceptedOffer[]; numAcceptedOffers: number; } /** * 注文オファーリポジトリ */ export declare class AcceptedOfferRepo { private readonly orderModel; constructor(connection: Connection); /** * オファー展開の注文検索 */ searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection?: IProjection4searchWithUnwoundAcceptedOffers): Promise<factory.order.IOrder[]>; aggreateOwnershipInfosByOrder(filter: { orderNumber: { $eq: string; }; }): Promise<{ identifier: string; }[]>; /** * 注文オファーを展開して検索する */ searchAcceptedOffersByOrderNumber(filter: { limit?: number; page?: number; $slice?: [number, number]; orderNumber: { $eq: string; }; project: { id: { $eq: string; }; }; /** * アイテムタイプで絞る場合 */ acceptedOffers?: { itemOffered?: { id?: { $eq?: string; }; typeOf?: { $in?: factory.order.IItemOffered['typeOf'][]; }; reservationFor?: { id?: { $in?: string[]; }; }; reservedTicket?: { ticketedSeat?: { seatNumber?: { $in?: string[]; }; }; }; }; }; }, inclusion?: (keyof IAcceptedOffer)[]): Promise<IAcceptedOffer[]>; /** * 注文オファーをsliceして検索する(2024-01-10~) */ searchSlicedAcceptedOffersByOrderNumber(filter: { $slice: [number, number]; orderNumber: { $eq: string; }; project: { id: { $eq: string; }; }; }): Promise<ISearchSlicedAcceptedOffersResult>; countByOrderNumber(filter: { orderNumber: { $eq: string; }; project: { id: { $eq: string; }; }; }): Promise<{ numAcceptedOffers: number; }>; /** * 特定のフィールド値リストを検索する */ distinctValues(filter: { orderNumber: { $in: string[]; }; }, field: IDistinctField): Promise<string[]>; } export {};