@villedemontreal/utils-knex 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -0
- package/dist/src/config/configs.d.ts +19 -0
- package/dist/src/config/configs.d.ts.map +1 -0
- package/dist/src/config/configs.js +27 -0
- package/dist/src/config/configs.js.map +1 -0
- package/dist/src/config/constants.d.ts +21 -0
- package/dist/src/config/constants.d.ts.map +1 -0
- package/dist/src/config/constants.js +21 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/config/init.d.ts +16 -0
- package/dist/src/config/init.d.ts.map +1 -0
- package/dist/src/config/init.js +33 -0
- package/dist/src/config/init.js.map +1 -0
- package/dist/src/databaseContext.d.ts +9 -0
- package/dist/src/databaseContext.d.ts.map +1 -0
- package/dist/src/databaseContext.js +3 -0
- package/dist/src/databaseContext.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +26 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/knexUtils.d.ts +134 -0
- package/dist/src/knexUtils.d.ts.map +1 -0
- package/dist/src/knexUtils.js +349 -0
- package/dist/src/knexUtils.js.map +1 -0
- package/dist/src/knexUtils.test.d.ts +2 -0
- package/dist/src/knexUtils.test.d.ts.map +1 -0
- package/dist/src/knexUtils.test.js +897 -0
- package/dist/src/knexUtils.test.js.map +1 -0
- package/dist/src/transactionManager.d.ts +34 -0
- package/dist/src/transactionManager.d.ts.map +1 -0
- package/dist/src/transactionManager.js +75 -0
- package/dist/src/transactionManager.js.map +1 -0
- package/dist/src/transactionManager.test.d.ts +10 -0
- package/dist/src/transactionManager.test.d.ts.map +1 -0
- package/dist/src/transactionManager.test.js +255 -0
- package/dist/src/transactionManager.test.js.map +1 -0
- package/dist/src/utils/logger.d.ts +12 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +53 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/testingConfigurations.d.ts +9 -0
- package/dist/src/utils/testingConfigurations.d.ts.map +1 -0
- package/dist/src/utils/testingConfigurations.js +16 -0
- package/dist/src/utils/testingConfigurations.js.map +1 -0
- package/dist/testing/testClient.d.ts +15 -0
- package/dist/testing/testClient.d.ts.map +1 -0
- package/dist/testing/testClient.js +55 -0
- package/dist/testing/testClient.js.map +1 -0
- package/dist/testing/testRepo.d.ts +8 -0
- package/dist/testing/testRepo.d.ts.map +1 -0
- package/dist/testing/testRepo.js +31 -0
- package/dist/testing/testRepo.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +76 -0
- package/src/config/configs.ts +34 -0
- package/src/config/constants.ts +33 -0
- package/src/config/init.ts +33 -0
- package/src/databaseContext.ts +9 -0
- package/src/index.ts +9 -0
- package/src/knexUtils.test.ts +1526 -0
- package/src/knexUtils.ts +459 -0
- package/src/transactionManager.test.ts +302 -0
- package/src/transactionManager.ts +94 -0
- package/src/utils/logger.ts +60 -0
- package/src/utils/testingConfigurations.ts +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knexUtils.test.js","sourceRoot":"","sources":["../../src/knexUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
import { IDatabaseContext } from './databaseContext';
|
|
3
|
+
/**
|
|
4
|
+
* A Knex manager that allows nested transactions.
|
|
5
|
+
* Instead of using a knex client directly, always use
|
|
6
|
+
* the "withClient()" and "withTransaction()" provided here...
|
|
7
|
+
* This will make sure that if the query is called inside an
|
|
8
|
+
* already started transaction, it will be part of it.
|
|
9
|
+
*/
|
|
10
|
+
export declare class KnexTransactionManager {
|
|
11
|
+
private getClientFnt;
|
|
12
|
+
/**
|
|
13
|
+
* @param getClientFnt a function to return the
|
|
14
|
+
* knex client to use.
|
|
15
|
+
*/
|
|
16
|
+
constructor(getClientFnt: () => Promise<Knex>);
|
|
17
|
+
/**
|
|
18
|
+
* Provides a knex client to run queries that need an explicit
|
|
19
|
+
* transaction. If a transaction is already started when this
|
|
20
|
+
* function is called, the same transaction will be used.
|
|
21
|
+
*/
|
|
22
|
+
withTransaction<T>(context: IDatabaseContext, fnt: (client: Knex) => Promise<T>): Promise<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Provides a knex client to run queries that don't need an explicit
|
|
25
|
+
* transaction. But if a transaction is already started when this
|
|
26
|
+
* function is called, the queries will be part of the transaction.
|
|
27
|
+
*/
|
|
28
|
+
withClient<T>(context: IDatabaseContext, fnt: (client: Knex) => Promise<T>, transactional?: boolean): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* "knex.Transaction" type guard.
|
|
31
|
+
*/
|
|
32
|
+
protected isTransactionClient: (client: any) => client is Knex.Transaction;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=transactionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionManager.d.ts","sourceRoot":"","sources":["../../src/transactionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAAsB;IAE1C;;;OAGG;gBACS,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAI7C;;;;OAIG;IACU,eAAe,CAAC,CAAC,EAC5B,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC;IAIb;;;;OAIG;IACU,UAAU,CAAC,CAAC,EACvB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EACjC,aAAa,UAAQ,GACpB,OAAO,CAAC,CAAC,CAAC;IA4Cb;;OAEG;IACH,SAAS,CAAC,mBAAmB,GAAI,QAAQ,GAAG,KAAG,MAAM,IAAI,IAAI,CAAC,WAAW,CAEvE;CACH"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KnexTransactionManager = void 0;
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
/**
|
|
6
|
+
* A Knex manager that allows nested transactions.
|
|
7
|
+
* Instead of using a knex client directly, always use
|
|
8
|
+
* the "withClient()" and "withTransaction()" provided here...
|
|
9
|
+
* This will make sure that if the query is called inside an
|
|
10
|
+
* already started transaction, it will be part of it.
|
|
11
|
+
*/
|
|
12
|
+
class KnexTransactionManager {
|
|
13
|
+
/**
|
|
14
|
+
* @param getClientFnt a function to return the
|
|
15
|
+
* knex client to use.
|
|
16
|
+
*/
|
|
17
|
+
constructor(getClientFnt) {
|
|
18
|
+
/**
|
|
19
|
+
* "knex.Transaction" type guard.
|
|
20
|
+
*/
|
|
21
|
+
this.isTransactionClient = (client) => {
|
|
22
|
+
return client && 'commit' in client && 'rollback' in client;
|
|
23
|
+
};
|
|
24
|
+
this.getClientFnt = getClientFnt;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Provides a knex client to run queries that need an explicit
|
|
28
|
+
* transaction. If a transaction is already started when this
|
|
29
|
+
* function is called, the same transaction will be used.
|
|
30
|
+
*/
|
|
31
|
+
async withTransaction(context, fnt) {
|
|
32
|
+
return await this.withClient(context, fnt, true);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Provides a knex client to run queries that don't need an explicit
|
|
36
|
+
* transaction. But if a transaction is already started when this
|
|
37
|
+
* function is called, the queries will be part of the transaction.
|
|
38
|
+
*/
|
|
39
|
+
async withClient(context, fnt, transactional = false) {
|
|
40
|
+
let contextClean = context;
|
|
41
|
+
if (_.isNil(contextClean)) {
|
|
42
|
+
contextClean = {
|
|
43
|
+
currentKnexClient: null,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const existingClient = contextClean.currentKnexClient;
|
|
47
|
+
if (existingClient && existingClient.name !== 'knex') {
|
|
48
|
+
throw new Error(`This manager requires a *knex* client to be passed in the database context! Currently : ${JSON.stringify(existingClient, null, 2)}`);
|
|
49
|
+
}
|
|
50
|
+
if (existingClient && (!transactional || this.isTransactionClient(existingClient))) {
|
|
51
|
+
return await fnt(existingClient);
|
|
52
|
+
}
|
|
53
|
+
const client = await this.getClientFnt();
|
|
54
|
+
if (transactional) {
|
|
55
|
+
return await client.transaction(async (trx) => {
|
|
56
|
+
contextClean.currentKnexClient = trx;
|
|
57
|
+
try {
|
|
58
|
+
return await fnt(trx);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
contextClean.currentKnexClient = existingClient;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
contextClean.currentKnexClient = client;
|
|
66
|
+
try {
|
|
67
|
+
return await fnt(client);
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
contextClean.currentKnexClient = existingClient;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.KnexTransactionManager = KnexTransactionManager;
|
|
75
|
+
//# sourceMappingURL=transactionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionManager.js","sourceRoot":"","sources":["../../src/transactionManager.ts"],"names":[],"mappings":";;;AACA,4BAA4B;AAG5B;;;;;;GAMG;AACH,MAAa,sBAAsB;IAGjC;;;OAGG;IACH,YAAY,YAAiC;QAqE7C;;WAEG;QACO,wBAAmB,GAAG,CAAC,MAAW,EAA8B,EAAE;YAC1E,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;QAC9D,CAAC,CAAC;QAzEA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAC1B,OAAyB,EACzB,GAAiC;QAEjC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CACrB,OAAyB,EACzB,GAAiC,EACjC,aAAa,GAAG,KAAK;QAErB,IAAI,YAAY,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1B,YAAY,GAAG;gBACb,iBAAiB,EAAE,IAAI;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAS,YAAY,CAAC,iBAAiB,CAAC;QAE5D,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,2FAA2F,IAAI,CAAC,SAAS,CACvG,cAAc,EACd,IAAI,EACJ,CAAC,CACF,EAAE,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,cAAc,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YACnF,OAAO,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC5C,YAAY,CAAC,iBAAiB,GAAG,GAAG,CAAC;gBACrC,IAAI,CAAC;oBACH,OAAO,MAAM,GAAG,CAAC,GAAU,CAAC,CAAC;gBAC/B,CAAC;wBAAS,CAAC;oBACT,YAAY,CAAC,iBAAiB,GAAG,cAAc,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,YAAY,CAAC,iBAAiB,GAAG,MAAM,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,iBAAiB,GAAG,cAAc,CAAC;QAClD,CAAC;IACH,CAAC;CAQF;AAlFD,wDAkFC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDatabaseContext } from './databaseContext';
|
|
2
|
+
export interface ITestContext extends IDatabaseContext {
|
|
3
|
+
executionId: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ITestUser {
|
|
6
|
+
id: number;
|
|
7
|
+
firstName: string;
|
|
8
|
+
lastName: string;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=transactionManager.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionManager.test.d.ts","sourceRoot":"","sources":["../../src/transactionManager.test.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// ==========================================
|
|
4
|
+
// Disabling some linting rules is OK in test files.
|
|
5
|
+
// tslint:disable:max-func-body-length
|
|
6
|
+
// tslint:disable:cyclomatic-complexity
|
|
7
|
+
// tslint:disable:no-string-literal
|
|
8
|
+
// ==========================================
|
|
9
|
+
const chai_1 = require("chai");
|
|
10
|
+
const uuid_1 = require("uuid");
|
|
11
|
+
const testClient_1 = require("../testing/testClient");
|
|
12
|
+
const testRepo_1 = require("../testing/testRepo");
|
|
13
|
+
async function createUsersTable(knexClient) {
|
|
14
|
+
await knexClient.schema.createTable(`users`, async (table) => {
|
|
15
|
+
table.increments('id').primary();
|
|
16
|
+
table.string('firstName', 256).notNullable();
|
|
17
|
+
table.string('lastName', 256).notNullable();
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
describe(`Transactions Manager tests`, () => {
|
|
21
|
+
let testContext;
|
|
22
|
+
before(async () => {
|
|
23
|
+
// ==========================================
|
|
24
|
+
// We create an initial "context". In an API
|
|
25
|
+
// project, this would probably be done in
|
|
26
|
+
// a controller. The controller would then
|
|
27
|
+
// pass this context to all methods called
|
|
28
|
+
// on services and, indirectly, on repositories.
|
|
29
|
+
// ==========================================
|
|
30
|
+
testContext = {
|
|
31
|
+
currentKnexClient: null,
|
|
32
|
+
executionId: (0, uuid_1.v4)(),
|
|
33
|
+
};
|
|
34
|
+
// ==========================================
|
|
35
|
+
// Create the "users" table
|
|
36
|
+
// ==========================================
|
|
37
|
+
await withTransaction(testContext, async (client) => {
|
|
38
|
+
await createUsersTable(client);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
after(async () => {
|
|
42
|
+
await (0, testClient_1.destroyTestKnexClient)();
|
|
43
|
+
});
|
|
44
|
+
async function withClient(context, fnt) {
|
|
45
|
+
const txManager = await (0, testClient_1.getTestTransactionManager)();
|
|
46
|
+
return txManager.withClient(context, fnt);
|
|
47
|
+
}
|
|
48
|
+
async function withTransaction(context, fnt) {
|
|
49
|
+
const txManager = await (0, testClient_1.getTestTransactionManager)();
|
|
50
|
+
return txManager.withTransaction(context, fnt);
|
|
51
|
+
}
|
|
52
|
+
async function getUserById(id) {
|
|
53
|
+
return await withClient(testContext, async (client) => {
|
|
54
|
+
const res = await client.select('id', 'firstName', 'lastName').from(`users`).where(`id`, id);
|
|
55
|
+
return {
|
|
56
|
+
id: res[0].id,
|
|
57
|
+
firstName: res[0].firstName,
|
|
58
|
+
lastName: res[0].lastName,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
let userId;
|
|
63
|
+
it(`insert a user`, async () => {
|
|
64
|
+
// ==========================================
|
|
65
|
+
// Here we use "withClient" not "withTransaction"
|
|
66
|
+
// since we do not need a transaction. We
|
|
67
|
+
// *could* start a transaction even if it's
|
|
68
|
+
// not required, it would still work, but it
|
|
69
|
+
// is more costy...
|
|
70
|
+
// ==========================================
|
|
71
|
+
await withClient(testContext, async (client) => {
|
|
72
|
+
const res = await client(`users`).insert({
|
|
73
|
+
firstName: 'Stromgol',
|
|
74
|
+
lastName: 'LaRoche',
|
|
75
|
+
});
|
|
76
|
+
userId = res[0];
|
|
77
|
+
});
|
|
78
|
+
const user = await getUserById(userId);
|
|
79
|
+
chai_1.assert.isOk(user);
|
|
80
|
+
chai_1.assert.deepEqual(user.id, userId);
|
|
81
|
+
chai_1.assert.deepEqual(user.firstName, 'Stromgol');
|
|
82
|
+
chai_1.assert.deepEqual(user.lastName, 'LaRoche');
|
|
83
|
+
});
|
|
84
|
+
it(`Modifiy the lastName - not in a trasaction - succes`, async () => {
|
|
85
|
+
await withClient(testContext, async (client) => {
|
|
86
|
+
await client(`users`)
|
|
87
|
+
.update({
|
|
88
|
+
lastName: 'LaPierre',
|
|
89
|
+
})
|
|
90
|
+
.where(`id`, userId);
|
|
91
|
+
await client(`users`)
|
|
92
|
+
.update({
|
|
93
|
+
lastName: 'Stone',
|
|
94
|
+
})
|
|
95
|
+
.where(`id`, userId);
|
|
96
|
+
});
|
|
97
|
+
const user = await getUserById(userId);
|
|
98
|
+
chai_1.assert.deepEqual(user.lastName, 'Stone');
|
|
99
|
+
});
|
|
100
|
+
it(`Modifiy the lastName - not in a trasaction - error in the second query`, async () => {
|
|
101
|
+
let error;
|
|
102
|
+
try {
|
|
103
|
+
await withClient(testContext, async (client) => {
|
|
104
|
+
await client(`users`)
|
|
105
|
+
.update({
|
|
106
|
+
lastName: 'Caillou',
|
|
107
|
+
})
|
|
108
|
+
.where(`id`, userId);
|
|
109
|
+
await client(`NOPE`) // invalid table name
|
|
110
|
+
.update({
|
|
111
|
+
lastName: 'Roquaille',
|
|
112
|
+
})
|
|
113
|
+
.where(`id`, userId);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
error = err;
|
|
118
|
+
}
|
|
119
|
+
if (!error) {
|
|
120
|
+
chai_1.assert.fail();
|
|
121
|
+
}
|
|
122
|
+
// ==========================================
|
|
123
|
+
// Has been modified, even if there was an error
|
|
124
|
+
// in the second query!
|
|
125
|
+
// ==========================================
|
|
126
|
+
const user = await getUserById(userId);
|
|
127
|
+
chai_1.assert.deepEqual(user.lastName, 'Caillou');
|
|
128
|
+
});
|
|
129
|
+
it(`modifiy the lastName - in a trasaction - error in the second query`, async () => {
|
|
130
|
+
let error;
|
|
131
|
+
try {
|
|
132
|
+
await withTransaction(testContext, async (client) => {
|
|
133
|
+
await client(`users`)
|
|
134
|
+
.update({
|
|
135
|
+
lastName: 'Sable',
|
|
136
|
+
})
|
|
137
|
+
.where(`id`, userId);
|
|
138
|
+
await client(`NOPE`) // invalid table name
|
|
139
|
+
.update({
|
|
140
|
+
lastName: 'Galet',
|
|
141
|
+
})
|
|
142
|
+
.where(`id`, userId);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
error = err;
|
|
147
|
+
}
|
|
148
|
+
if (!error) {
|
|
149
|
+
chai_1.assert.fail();
|
|
150
|
+
}
|
|
151
|
+
// ==========================================
|
|
152
|
+
// Not modified! The transaction has been aborted.
|
|
153
|
+
// ==========================================
|
|
154
|
+
const user = await getUserById(userId);
|
|
155
|
+
chai_1.assert.deepEqual(user.lastName, 'Caillou');
|
|
156
|
+
});
|
|
157
|
+
it(`Transaction working even when executing a query in another file/class, by passing the "context" - no error`, async () => {
|
|
158
|
+
await withTransaction(testContext, async (client) => {
|
|
159
|
+
await client(`users`)
|
|
160
|
+
.update({
|
|
161
|
+
lastName: 'Tremblay',
|
|
162
|
+
})
|
|
163
|
+
.where(`id`, userId);
|
|
164
|
+
// ==========================================
|
|
165
|
+
// Execute a query in another file/class, always
|
|
166
|
+
// by passing the current "context".
|
|
167
|
+
// ==========================================
|
|
168
|
+
await testRepo_1.testRepo.changeFirstName(testContext, userId, 'Georges');
|
|
169
|
+
});
|
|
170
|
+
// ==========================================
|
|
171
|
+
// Modified!
|
|
172
|
+
// ==========================================
|
|
173
|
+
const user = await getUserById(userId);
|
|
174
|
+
chai_1.assert.deepEqual(user.firstName, 'Georges');
|
|
175
|
+
chai_1.assert.deepEqual(user.lastName, 'Tremblay');
|
|
176
|
+
});
|
|
177
|
+
it(`Transaction working (so aborted) when executing a query in another file/class that generates an error`, async () => {
|
|
178
|
+
let error;
|
|
179
|
+
try {
|
|
180
|
+
await withTransaction(testContext, async (client) => {
|
|
181
|
+
await client(`users`)
|
|
182
|
+
.update({
|
|
183
|
+
lastName: 'Lapointe',
|
|
184
|
+
})
|
|
185
|
+
.where(`id`, userId);
|
|
186
|
+
// ==========================================
|
|
187
|
+
// Execute a query in another file/class. This
|
|
188
|
+
// generated an error which must rollback the
|
|
189
|
+
// transaction!
|
|
190
|
+
// ==========================================
|
|
191
|
+
await testRepo_1.testRepo.generateSqlError(testContext);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
error = err;
|
|
196
|
+
}
|
|
197
|
+
if (!error) {
|
|
198
|
+
chai_1.assert.fail();
|
|
199
|
+
}
|
|
200
|
+
// ==========================================
|
|
201
|
+
// Not modified! The transaction has been aborted.
|
|
202
|
+
// ==========================================
|
|
203
|
+
const user = await getUserById(userId);
|
|
204
|
+
chai_1.assert.deepEqual(user.firstName, 'Georges');
|
|
205
|
+
chai_1.assert.deepEqual(user.lastName, 'Tremblay');
|
|
206
|
+
});
|
|
207
|
+
it(`Transaction rollbacked in a regular Error too`, async () => {
|
|
208
|
+
let error;
|
|
209
|
+
try {
|
|
210
|
+
await withTransaction(testContext, async (client) => {
|
|
211
|
+
await client(`users`)
|
|
212
|
+
.update({
|
|
213
|
+
lastName: 'Lapointe',
|
|
214
|
+
})
|
|
215
|
+
.where(`id`, userId);
|
|
216
|
+
throw new Error(`Some error`);
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
error = err;
|
|
221
|
+
}
|
|
222
|
+
if (!error) {
|
|
223
|
+
chai_1.assert.fail();
|
|
224
|
+
}
|
|
225
|
+
// ==========================================
|
|
226
|
+
// Not modified! The transaction has been aborted.
|
|
227
|
+
// ==========================================
|
|
228
|
+
const user = await getUserById(userId);
|
|
229
|
+
chai_1.assert.deepEqual(user.firstName, 'Georges');
|
|
230
|
+
chai_1.assert.deepEqual(user.lastName, 'Tremblay');
|
|
231
|
+
});
|
|
232
|
+
it(`Retured value, withClient`, async () => {
|
|
233
|
+
const user = await withClient(testContext, async (client) => {
|
|
234
|
+
await client(`users`)
|
|
235
|
+
.update({
|
|
236
|
+
lastName: 'aaaaa',
|
|
237
|
+
})
|
|
238
|
+
.where(`id`, userId);
|
|
239
|
+
return await getUserById(userId);
|
|
240
|
+
});
|
|
241
|
+
chai_1.assert.deepEqual(user.lastName, 'aaaaa');
|
|
242
|
+
});
|
|
243
|
+
it(`Retured value, withTransaction`, async () => {
|
|
244
|
+
const user = await withTransaction(testContext, async (client) => {
|
|
245
|
+
await client(`users`)
|
|
246
|
+
.update({
|
|
247
|
+
lastName: 'bbbbb',
|
|
248
|
+
})
|
|
249
|
+
.where(`id`, userId);
|
|
250
|
+
return await getUserById(userId);
|
|
251
|
+
});
|
|
252
|
+
chai_1.assert.deepEqual(user.lastName, 'bbbbb');
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=transactionManager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionManager.test.js","sourceRoot":"","sources":["../../src/transactionManager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ILogger } from '@villedemontreal/logger';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Logger.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createLogger(name: string): ILogger;
|
|
6
|
+
/**
|
|
7
|
+
* A Logger that uses a dummy cid provider.
|
|
8
|
+
*
|
|
9
|
+
* Only use this when running the tests!
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTestingLoggerCreator(): (name: string) => ILogger;
|
|
12
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAMR,MAAM,yBAAyB,CAAC;AAKjC;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBlD;AAQD;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CASnE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLogger = createLogger;
|
|
4
|
+
exports.getTestingLoggerCreator = getTestingLoggerCreator;
|
|
5
|
+
const logger_1 = require("@villedemontreal/logger");
|
|
6
|
+
const configs_1 = require("../config/configs");
|
|
7
|
+
let testingLoggerLibInitialised = false;
|
|
8
|
+
/**
|
|
9
|
+
* Creates a Logger.
|
|
10
|
+
*/
|
|
11
|
+
function createLogger(name) {
|
|
12
|
+
// ==========================================
|
|
13
|
+
// We use a LazyLogger so the real Logger
|
|
14
|
+
// is only created when the first
|
|
15
|
+
// log is actually performed... At that point,
|
|
16
|
+
// our "configs.loggerCreator" configuration
|
|
17
|
+
// must have been set by the code using our library!
|
|
18
|
+
//
|
|
19
|
+
// This pattern allows calling code to import
|
|
20
|
+
// modules from us in which a logger is
|
|
21
|
+
// created in the global scope :
|
|
22
|
+
//
|
|
23
|
+
// let logger = createLogger('someName');
|
|
24
|
+
//
|
|
25
|
+
// Without a Lazy Logger, the library configurations
|
|
26
|
+
// would at that moment *not* have been set yet
|
|
27
|
+
// (by the calling code) and an Error would be thrown
|
|
28
|
+
// because the "configs.loggerCreator" is required.
|
|
29
|
+
// ==========================================
|
|
30
|
+
return new logger_1.LazyLogger(name, (nameArg) => {
|
|
31
|
+
return configs_1.configs.loggerCreator(nameArg);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function initTestingLoggerConfigs() {
|
|
35
|
+
const loggerConfig = new logger_1.LoggerConfigs(() => 'test-cid');
|
|
36
|
+
loggerConfig.setLogLevel(logger_1.LogLevel.DEBUG);
|
|
37
|
+
(0, logger_1.initLogger)(loggerConfig);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A Logger that uses a dummy cid provider.
|
|
41
|
+
*
|
|
42
|
+
* Only use this when running the tests!
|
|
43
|
+
*/
|
|
44
|
+
function getTestingLoggerCreator() {
|
|
45
|
+
return (name) => {
|
|
46
|
+
if (!testingLoggerLibInitialised) {
|
|
47
|
+
initTestingLoggerConfigs();
|
|
48
|
+
testingLoggerLibInitialised = true;
|
|
49
|
+
}
|
|
50
|
+
return new logger_1.Logger(name);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";;AAeA,oCAsBC;AAaD,0DASC;AA3DD,oDAOiC;AACjC,+CAA4C;AAE5C,IAAI,2BAA2B,GAAG,KAAK,CAAC;AAExC;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,6CAA6C;IAC7C,yCAAyC;IACzC,iCAAiC;IACjC,8CAA8C;IAC9C,4CAA4C;IAC5C,oDAAoD;IACpD,EAAE;IACF,6CAA6C;IAC7C,uCAAuC;IACvC,gCAAgC;IAChC,EAAE;IACF,yCAAyC;IACzC,EAAE;IACF,oDAAoD;IACpD,+CAA+C;IAC/C,qDAAqD;IACrD,mDAAmD;IACnD,6CAA6C;IAC7C,OAAO,IAAI,mBAAU,CAAC,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QAC9C,OAAO,iBAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,YAAY,GAAkB,IAAI,sBAAa,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IACxE,YAAY,CAAC,WAAW,CAAC,iBAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,IAAA,mBAAU,EAAC,YAAY,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB;IACrC,OAAO,CAAC,IAAY,EAAW,EAAE;QAC/B,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACjC,wBAAwB,EAAE,CAAC;YAC3B,2BAA2B,GAAG,IAAI,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call this when your need to set
|
|
3
|
+
* *Testing* configurations to the current
|
|
4
|
+
* library, without the need for a calling code
|
|
5
|
+
* to do so.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export declare function setTestingConfigurations(): void;
|
|
9
|
+
//# sourceMappingURL=testingConfigurations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingConfigurations.d.ts","sourceRoot":"","sources":["../../../src/utils/testingConfigurations.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setTestingConfigurations = setTestingConfigurations;
|
|
4
|
+
const configs_1 = require("../config/configs");
|
|
5
|
+
const logger_1 = require("../utils/logger");
|
|
6
|
+
/**
|
|
7
|
+
* Call this when your need to set
|
|
8
|
+
* *Testing* configurations to the current
|
|
9
|
+
* library, without the need for a calling code
|
|
10
|
+
* to do so.
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
function setTestingConfigurations() {
|
|
14
|
+
configs_1.configs.setLoggerCreator((0, logger_1.getTestingLoggerCreator)());
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=testingConfigurations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingConfigurations.js","sourceRoot":"","sources":["../../../src/utils/testingConfigurations.ts"],"names":[],"mappings":";;AAUA,4DAEC;AAZD,+CAA4C;AAC5C,4CAA0D;AAE1D;;;;;;GAMG;AACH,SAAgB,wBAAwB;IACtC,iBAAO,CAAC,gBAAgB,CAAC,IAAA,gCAAuB,GAAE,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import knex from 'knex';
|
|
2
|
+
import { KnexTransactionManager } from '../src/transactionManager';
|
|
3
|
+
/**
|
|
4
|
+
* Get/create the test Knex client
|
|
5
|
+
*/
|
|
6
|
+
export declare function getTestKnexClient(): Promise<knex.Knex<any, any[]>>;
|
|
7
|
+
/**
|
|
8
|
+
* Get/create the test Knex transaction manager
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTestTransactionManager(): Promise<KnexTransactionManager>;
|
|
11
|
+
/**
|
|
12
|
+
* Destroy the test Knex client
|
|
13
|
+
*/
|
|
14
|
+
export declare function destroyTestKnexClient(): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=testClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testClient.d.ts","sourceRoot":"","sources":["../../testing/testClient.ts"],"names":[],"mappings":"AACA,OAAO,IAAc,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAKnE;;GAEG;AACH,wBAAsB,iBAAiB,mCAKtC;AAED;;GAEG;AACH,wBAAsB,yBAAyB,oCAK9C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,kBAI1C"}
|