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