UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

130 lines (129 loc) 3.29 kB
import type { Connection } from 'mongoose'; import * as factory from '../factory'; /** * 口座リポジトリ */ export declare class AccountRepo { private readonly accountModel; constructor(connection: Connection); static CREATE_MONGO_CONDITIONS(params: factory.account.ISearchConditions): any[]; /** * 口座を開設する */ open(params: { project: { typeOf: factory.organizationType.Project; id: string; }; /** * 口座種別 */ typeOf: string; /** * 口座タイプ */ accountType: string; /** * 口座名義 */ name: string; /** * 口座番号 */ accountNumber: string; /** * 初期金額 */ initialBalance: number; /** * 開設日時 */ openDate: Date; }[]): Promise<factory.account.IAccount[]>; /** * 口座を解約する */ /** * 口座番号で検索する */ findByAccountNumber(params: { /** * 口座番号 */ accountNumber: string; }): Promise<factory.account.IAccount>; /** * 金額を確保する * https://en.wikipedia.org/wiki/Authorization_hold */ authorizeAmount(params: { /** * 口座番号 */ accountNumber: string; /** * 金額 */ amount: number; /** * 進行取引 */ transaction: factory.account.IPendingTransaction; /** * 利用可能金額確認をしない場合、force: true */ force?: boolean; }): Promise<void>; /** * 取引を開始する */ startTransaction(params: { /** * 口座番号 */ accountNumber: string; /** * 進行取引 */ transaction: factory.account.IPendingTransaction; }): Promise<void>; /** * 決済処理を実行する * 口座上で進行中の取引について、実際に金額移動処理を実行します。 */ settleTransaction(params: { fromAccountNumber?: string; toAccountNumber?: string; amount: number; transactionId: string; }): Promise<void>; /** * 取引を取り消す * 口座上で進行中の取引を中止します。 * https://www.investopedia.com/terms/v/void-transaction.asp */ voidTransaction(params: { fromAccountNumber?: string; toAccountNumber?: string; amount: number; transactionId: string; }): Promise<void>; /** * 通貨転送返金 */ returnTransaction(params: { fromAccountNumber?: string; toAccountNumber?: string; amount: number; transactionId: string; }): Promise<void>; count(params: factory.account.ISearchConditions): Promise<number>; /** * 口座を検索する */ search(params: factory.account.ISearchConditions): Promise<factory.account.IAccount[]>; unsetUnnecessaryFields(params: { filter: any; $unset: any; }): Promise<import("mongoose").UpdateWriteOpResult>; }