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