UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

153 lines (152 loc) 5.18 kB
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; }