@chevre/domain
Version:
Chevre Domain Library for Node.js
58 lines (57 loc) • 2.24 kB
TypeScript
import type { Connection } from 'mongoose';
import * as factory from '../factory';
type IOrderInTransaction = Pick<factory.order.IOrder, 'orderNumber' | 'project'> & {
typeOf: factory.transactionType.PlaceOrder;
orderDate: Date;
acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
customer?: factory.order.ICustomer;
};
export type IPlacingOrder = Pick<factory.order.IOrder, 'broker' | 'confirmationNumber' | 'identifier' | 'isGift' | 'name' | 'orderDate' | 'orderNumber' | 'orderStatus' | 'orderedItem' | 'paymentMethods' | 'price' | 'priceCurrency' | 'seller' | 'typeOf' | 'url'> & {
acceptedOffers?: never;
customer?: never;
};
/**
* 取引中注文リポジトリ
*/
export declare class OrderInTransactionRepo {
private readonly orderModel;
constructor(connection: Connection);
/**
* 取引進行中の注文からacceptedOffersを検索する
*/
findAcceptedOffersByOrderNumber(params: {
orderNumber: {
$eq: string;
};
}): Promise<factory.order.IAcceptedOffer<factory.order.IItemOffered>[]>;
/**
* 注文を受注する
*/
placeOrder(order: IPlacingOrder): Promise<void>;
acceptOffer(params: Pick<IOrderInTransaction, 'acceptedOffers' | 'orderNumber' | 'project'>): Promise<import("mongoose").UpdateWriteOpResult | undefined>;
/**
* serialNumberからオファーを除外する
* ホワイトリストとブラックリスト両方に対応
*/
voidAcceptedOfferBySerialNumber(params: {
orderNumber: string;
acceptedOffers: {
serialNumber: {
$in?: string[];
$nin?: string[];
};
};
}): Promise<import("mongoose").UpdateWriteOpResult | undefined>;
setCustomer(params: Pick<IOrderInTransaction, 'orderNumber' | 'project'> & {
customer: factory.order.ICustomer;
}): Promise<import("mongoose").UpdateWriteOpResult>;
findCustomerByOrderNumber(params: {
orderNumber: {
$eq: string;
};
}): Promise<factory.order.ICustomer>;
deleteByOrderNumber(params: {
orderNumber: string;
}): Promise<import("mongodb").DeleteResult>;
}
export {};