UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

60 lines (59 loc) 1.82 kB
import type { Connection, PipelineStage } from 'mongoose'; import * as factory from '../factory'; import { IAggregateReservation } from './mongoose/schemas/aggregateReservation'; type IMatchStage = PipelineStage.Match; export interface IUpdateAggregateReservationParams { $set: { aggregateOffer?: factory.event.event.IAggregateOffer; aggregateEntranceGate?: factory.event.event.IAggregateEntranceGate; }; } type ISearchWithReservationForIdResult = Pick<IAggregateReservation, 'aggregateOffer'> & { /** * イベントID */ id: string; }; export interface ISortOrder { 'reservationFor.startDate'?: factory.sortType; } export interface ISearchConditions { limit?: number; page?: number; sort?: ISortOrder; project?: { id?: { $eq?: string; }; }; reservationFor?: { id?: { $eq?: string; $in?: string[]; }; typeOf?: factory.eventType; startFrom?: Date; startThrough?: Date; }; } /** * 予約集計リポジトリ */ export declare class AggregateReservationRepo { private readonly aggregateReservationModel; constructor(connection: Connection); static CREATE_MONGO_CONDITIONS(conditions: ISearchConditions): IMatchStage[]; /** * 予約集計を検索する */ searchWithReservationForId(params: ISearchConditions, inclusion: ('aggregateOffer')[]): Promise<ISearchWithReservationForIdResult[]>; /** * 予約集計を保管する */ save(filter: Pick<IAggregateReservation, 'project' | 'reservationFor'>, update: IUpdateAggregateReservationParams): Promise<void>; unsetUnnecessaryFields(params: { filter: any; $unset: any; }): Promise<import("mongoose").UpdateWriteOpResult>; } export {};