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