m
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import { DataSource, EntityManager, EntityTarget, ObjectLiteral, QueryRunner, Repository } from 'typeorm';
|
||||
export declare class DataSourceContext {
|
||||
static put<R>(source: DataSource, callback: () => R): void;
|
||||
protected static current(): DataSource;
|
||||
static startTransaction<T>(callback: (transaction: DBTransaction) => Promise<T>): Promise<T>;
|
||||
static startTransactionToQueryRunner<T>(queryRunner: QueryRunner, callback: (transaction: DBTransaction) => Promise<T>): Promise<T>;
|
||||
}
|
||||
export declare class DBTransaction {
|
||||
private queryRunner;
|
||||
private manager;
|
||||
constructor(queryRunner: QueryRunner, manager: EntityManager);
|
||||
rollback(): Promise<void>;
|
||||
commit(): Promise<void>;
|
||||
getRepository<Entity extends ObjectLiteral>(target: EntityTarget<Entity>): Repository<Entity>;
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.DBTransaction = exports.DataSourceContext = void 0;
|
||||
const async_hooks_1 = require("async_hooks");
|
||||
const storage = new async_hooks_1.AsyncLocalStorage();
|
||||
class DataSourceContext {
|
||||
static put(source, callback) {
|
||||
storage.run(source, callback);
|
||||
}
|
||||
static current() {
|
||||
return storage.getStore();
|
||||
}
|
||||
static async startTransaction(callback) {
|
||||
const queryRunner = DataSourceContext.current().createQueryRunner();
|
||||
return this.startTransactionToQueryRunner(queryRunner, callback);
|
||||
}
|
||||
static async startTransactionToQueryRunner(queryRunner, callback) {
|
||||
await queryRunner.connect();
|
||||
await queryRunner.startTransaction();
|
||||
const transaction = new DBTransaction(queryRunner, queryRunner.manager);
|
||||
try {
|
||||
const result = await callback(transaction);
|
||||
await transaction.commit();
|
||||
return result;
|
||||
}
|
||||
catch (error) {
|
||||
await transaction.rollback();
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.DataSourceContext = DataSourceContext;
|
||||
class DBTransaction {
|
||||
queryRunner;
|
||||
manager;
|
||||
constructor(queryRunner, manager) {
|
||||
this.queryRunner = queryRunner;
|
||||
this.manager = manager;
|
||||
}
|
||||
async rollback() {
|
||||
if (!this.queryRunner.isTransactionActive) {
|
||||
return;
|
||||
}
|
||||
await this.queryRunner.rollbackTransaction();
|
||||
await this.queryRunner.release();
|
||||
}
|
||||
async commit() {
|
||||
if (!this.queryRunner.isTransactionActive) {
|
||||
return;
|
||||
}
|
||||
await this.queryRunner.commitTransaction();
|
||||
await this.queryRunner.release();
|
||||
}
|
||||
getRepository(target) {
|
||||
return this.manager.getRepository(target);
|
||||
}
|
||||
}
|
||||
exports.DBTransaction = DBTransaction;
|
||||
//# sourceMappingURL=data_source.context.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"data_source.context.js","sourceRoot":"","sources":["../../../../src/app/common/context/data_source.context.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAUhD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAc,CAAC;AAEpD,MAAa,iBAAiB;IACrB,MAAM,CAAC,GAAG,CAAI,MAAkB,EAAE,QAAiB;QACxD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,OAAO;QACtB,OAAO,OAAO,CAAC,QAAQ,EAAG,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAClC,QAAoD;QAEpD,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAC/C,WAAwB,EACxB,QAAoD;QAEpD,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA/BD,8CA+BC;AAED,MAAa,aAAa;IAEd;IACA;IAFV,YACU,WAAwB,EACxB,OAAsB;QADtB,gBAAW,GAAX,WAAW,CAAa;QACxB,YAAO,GAAP,OAAO,CAAe;IAC7B,CAAC;IAEG,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IACM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IACM,aAAa,CAClB,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;CACF;AAzBD,sCAyBC"}
|
||||
@@ -0,0 +1,2 @@
|
||||
export declare const iniUserIdContext: <R>(userId: number, callback: () => R) => void;
|
||||
export declare const getUserIdContext: () => number;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getUserIdContext = exports.iniUserIdContext = void 0;
|
||||
const async_hooks_1 = require("async_hooks");
|
||||
const responseAsyncStorage = new async_hooks_1.AsyncLocalStorage();
|
||||
const iniUserIdContext = (userId, callback) => {
|
||||
responseAsyncStorage.run(userId, callback);
|
||||
};
|
||||
exports.iniUserIdContext = iniUserIdContext;
|
||||
const getUserIdContext = () => {
|
||||
return responseAsyncStorage.getStore();
|
||||
};
|
||||
exports.getUserIdContext = getUserIdContext;
|
||||
//# sourceMappingURL=user_id.context.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"user_id.context.js","sourceRoot":"","sources":["../../../../src/app/common/context/user_id.context.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,MAAM,oBAAoB,GAAG,IAAI,+BAAiB,EAAU,CAAC;AAEtD,MAAM,gBAAgB,GAAG,CAAI,MAAc,EAAE,QAAiB,EAAE,EAAE;IACvE,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,OAAO,oBAAoB,CAAC,QAAQ,EAAG,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|
||||
Reference in New Issue
Block a user