@chevre/domain
Version:
Chevre Domain Library for Node.js
60 lines (59 loc) • 1.82 kB
TypeScript
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 {};