UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

137 lines (136 loc) 4.18 kB
import * as factory from '../../factory'; type KeyOfOffer = keyof Omit<factory.unitPriceOffer.IUnitPriceOffer, 'id'>; type IProjection = { [key in KeyOfOffer]?: 0 | 1; }; type IOfferInCatalog = factory.unitPriceOffer.IUnitPriceOffer & { /** * 集計オファー内インデックス */ offerIndex?: number; parentOffer?: { id: string; }; /** * 単価オファーID * 検索レスポンスに必ず含まれる */ id: string; }; interface IPriceSpecificationConditionsOnSearchWithSortIndex { appliesToMovieTicket?: { serviceType?: { $exists?: boolean; }; serviceOutput?: { /** * 適用決済方法タイプ */ typeOf?: { $eq?: string; $all?: string[]; }; }; }; } /** * カタログ内オファー読取リポジトリ */ declare abstract class OfferInCatalogReadOnlyRepo { /** * カタログIDで単価オファーを全て検索する * 必ずカタログデータから単価オファーIDを参照する */ abstract searchAllByOfferCatalogId(params: { subOfferCatalog: { /** * サブカタログID */ id: string; isOfferCatalogItem: boolean; }; projection?: IProjection; }): Promise<{ offers: IOfferInCatalog[]; }>; /** * 単価オファーIDとカタログIDで単価オファーを全て検索する * 単価オファーIDを一定数指定する想定なのでpagingは不要 */ abstract 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で判断する */ abstract 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[]; }>; /** * クライアントの利用可能カタログを検索する */ abstract searchAvailableCatalogs(params: { project: { id: string; }; includedInDataCatalog: { id: string[]; }; availableAtOrFrom: { id: string; }; unacceptedPaymentMethod: string[]; }): Promise<{ /** * カタログID */ id: string; }[]>; abstract count(params: Omit<factory.unitPriceOffer.ISearchConditions, 'limit' | 'page' | 'sort'>): Promise<number>; abstract search(params: factory.unitPriceOffer.ISearchConditions, projection?: IProjection): Promise<IOfferInCatalog[]>; } export { KeyOfOffer, IProjection, IOfferInCatalog, IPriceSpecificationConditionsOnSearchWithSortIndex, OfferInCatalogReadOnlyRepo };