@chevre/domain
Version:
Chevre Domain Library for Node.js
76 lines (75 loc) • 2.72 kB
TypeScript
import { Connection } from 'mongoose';
import * as factory from '../factory';
import TransactionModel from './mongoose/model/transaction';
/**
* 取引リポジトリー
*/
export declare class MongoRepository {
readonly transactionModel: typeof TransactionModel;
constructor(connection: Connection);
static CREATE_MONGO_CONDITIONS(params: factory.transaction.ISearchConditions<factory.transactionType>): any[];
/**
* 取引を開始する
*/
start<T extends factory.transactionType>(params: factory.transaction.IStartParams<T>): Promise<factory.transaction.ITransaction<T>>;
/**
* IDで取引を取得する
*/
findById<T extends factory.transactionType>(params: {
typeOf: T;
id: string;
}): Promise<factory.transaction.ITransaction<T>>;
/**
* 進行中の取引を取得する
*/
findInProgressById<T extends factory.transactionType>(params: {
typeOf: T;
id: string;
}): Promise<factory.transaction.ITransaction<T>>;
/**
* 取引を確定する
*/
confirm<T extends factory.transactionType>(params: {
typeOf: T;
id: string;
result: factory.transaction.IResult<T>;
potentialActions: factory.transaction.IPotentialActions<T>;
}): Promise<factory.transaction.ITransaction<T>>;
/**
* タスク未エクスポートの取引をひとつ取得してエクスポートを開始する
*/
startExportTasks<T extends factory.transactionType>(params: {
typeOf: T;
status: factory.transactionStatusType;
}): Promise<factory.transaction.ITransaction<T> | null>;
/**
* タスクエクスポートリトライ
* todo updatedAtを基準にしているが、タスクエクスポートトライ日時を持たせた方が安全か?
*/
reexportTasks(params: {
intervalInMinutes: number;
}): Promise<void>;
/**
* set task status exported by transaction id
* IDでタスクをエクスポート済に変更する
*/
setTasksExportedById(params: {
id: string;
}): Promise<void>;
/**
* 取引を期限切れにする
*/
makeExpired(): Promise<void>;
/**
* 取引を中止する
*/
cancel<T extends factory.transactionType>(params: {
typeOf: T;
id: string;
}): Promise<factory.transaction.ITransaction<T>>;
count<T extends factory.transactionType>(params: factory.transaction.ISearchConditions<T>): Promise<number>;
/**
* 取引を検索する
*/
search<T extends factory.transactionType>(params: factory.transaction.ISearchConditions<T>): Promise<factory.transaction.ITransaction<T>[]>;
}