@chevre/domain
Version:
Chevre Domain Library for Node.js
153 lines (152 loc) • 5.18 kB
TypeScript
import { AnyExpression, Connection } from 'mongoose';
import * as factory from '../../factory';
import { IOfferInCatalog, IPriceSpecificationConditionsOnSearchWithSortIndex, IProjection, OfferInCatalogReadOnlyRepo } from './offerInCatalogReadOnly';
export { IPriceSpecificationConditionsOnSearchWithSortIndex, IOfferInCatalog as IUnitPriceOfferFromAggregateOffer };
/**
* 単価オファー読取リポジトリ
*/
export declare class OfferRepo implements OfferInCatalogReadOnlyRepo {
private readonly aggregateOfferModel;
private readonly offerCatalogModel;
private readonly offerCatalogItemModel;
constructor(connection: Connection);
static CREATE_AGGREGATE_OFFERS_PROJECTION(params: IProjection): {
[field: string]: AnyExpression;
};
/**
* カタログIDで単価オファーを全て検索する
* 必ずカタログデータから単価オファーIDを参照する
*/
searchAllByOfferCatalogId(params: {
subOfferCatalog: {
/**
* サブカタログID
*/
id: string;
isOfferCatalogItem: boolean;
};
projection?: IProjection;
}): Promise<{
offers: IOfferInCatalog[];
}>;
/**
* 単価オファーIDとカタログIDで単価オファーを全て検索する
* 単価オファーIDを一定数指定する想定なのでpagingは不要
*/
searchAllByIdsAndOfferCatalogId(params: {
/**
* 指定したIDの単価オファーだけ取得
*/
ids: string[];
includedInDataCatalog: {
/**
* オファー記載のカタログID(複数対応)
*/
id: string[];
isOfferCatalogItem: boolean;
};
availableAtOrFrom?: {
id?: string;
};
unacceptedPaymentMethod?: string[];
excludeAppliesToMovieTicket: boolean;
onlyValid?: boolean;
projection?: IProjection;
}): Promise<IOfferInCatalog[]>;
/**
* カタログに含まれるオファーを検索する(カタログ内ソートは保証しない)
* カタログ内ソートインデックスはsortedOfferIdsで判断する
*/
searchByOfferCatalogIdWithSortIndex(params: {
offerCatalog: {
/**
* サブカタログID
*/
id: string;
isOfferCatalogItem: boolean;
};
availableAtOrFrom?: {
id?: string;
};
unacceptedPaymentMethod?: string[];
excludeAppliesToMovieTicket: boolean;
/**
* 適用決済カード条件
*/
priceSpecification: IPriceSpecificationConditionsOnSearchWithSortIndex;
onlyValid?: boolean;
useIncludeInDataCatalog: boolean;
limit?: number;
page?: number;
projection?: IProjection;
}): Promise<{
offers: IOfferInCatalog[];
/**
* カタログ内ソートされた集計オファーIDリスト
*/
sortedOfferIds: string[];
}>;
/**
* カタログに記載されたオファーにおいて利用可能な決済方法区分を検索する
*/
searchAvaialbleAppliesToMovieTicketByOfferCatalogId(params: {
subOfferCatalog: {
/**
* カタログID or サブカタログID
*/
id: string;
isOfferCatalogItem: boolean;
};
availableAtOrFrom?: {
id?: string;
};
unacceptedPaymentMethod?: string[];
excludeAppliesToMovieTicket: boolean;
onlyValid?: boolean;
limit?: number;
page?: number;
useIncludeInDataCatalog: boolean;
}): Promise<Pick<factory.priceSpecification.unitPrice.IAppliesToMovieTicket, 'serviceOutput'>[]>;
/**
* クライアントの利用可能カタログを検索する
*/
searchAvailableCatalogs(params: {
project: {
id: string;
};
includedInDataCatalog: {
id: string[];
};
availableAtOrFrom: {
id: string;
};
unacceptedPaymentMethod: string[];
}): Promise<{
id: string;
}[]>;
/**
* サブカタログがクライアントで利用可能かどうか
*/
isCatalogAvailable(params: {
includedInDataCatalog: {
/**
* サブカタログID
*/
id: string;
};
availableAtOrFrom: {
id: string;
};
unacceptedPaymentMethod: string[];
}): Promise<boolean>;
count(params: Omit<factory.unitPriceOffer.ISearchConditions, 'limit' | 'page' | 'sort'>): Promise<number>;
search(params: factory.unitPriceOffer.ISearchConditions, projection?: IProjection): Promise<IOfferInCatalog[]>;
/**
* サブカタログから集計オファーIDリストを検索する
*/
private searchAggregateOfferIdsBySubOfferCatalog;
/**
* 複数サブカタログから集計オファーIDリストを検索する
*/
private searchAggregateOfferIdsBySubOfferCatalogs;
}