This commit is contained in:
qq
2026-04-21 22:34:39 +08:00
commit c28429b589
718 changed files with 48804 additions and 0 deletions
+15
View File
@@ -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
View File
@@ -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
+1
View File
@@ -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"}
+2
View File
@@ -0,0 +1,2 @@
export declare const iniUserIdContext: <R>(userId: number, callback: () => R) => void;
export declare const getUserIdContext: () => number;
+14
View File
@@ -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
+1
View File
@@ -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"}