@squiz/db-lib 1.71.1 → 1.71.3
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +14 -0
- package/lib/AbstractRepository.d.ts +57 -0
- package/lib/AbstractRepository.d.ts.map +1 -0
- package/lib/AbstractRepository.integration.spec.d.ts +2 -0
- package/lib/AbstractRepository.integration.spec.d.ts.map +1 -0
- package/lib/AbstractRepository.integration.spec.js +118 -0
- package/lib/AbstractRepository.integration.spec.js.map +1 -0
- package/lib/AbstractRepository.js +187 -0
- package/lib/AbstractRepository.js.map +1 -0
- package/lib/ConnectionManager.d.ts +26 -0
- package/lib/ConnectionManager.d.ts.map +1 -0
- package/lib/ConnectionManager.js +58 -0
- package/lib/ConnectionManager.js.map +1 -0
- package/lib/Migrator.d.ts +25 -0
- package/lib/Migrator.d.ts.map +1 -0
- package/lib/Migrator.js +160 -0
- package/lib/Migrator.js.map +1 -0
- package/lib/PostgresErrorCodes.d.ts +269 -0
- package/lib/PostgresErrorCodes.d.ts.map +1 -0
- package/lib/PostgresErrorCodes.js +274 -0
- package/lib/PostgresErrorCodes.js.map +1 -0
- package/lib/Repositories.d.ts +3 -0
- package/lib/Repositories.d.ts.map +1 -0
- package/lib/Repositories.js +3 -0
- package/lib/Repositories.js.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.d.ts +162 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.d.ts.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.js +367 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.js.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.d.ts +27 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.d.ts.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.js +698 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.js.map +1 -0
- package/lib/dynamodb/DynamoDbManager.d.ts +19 -0
- package/lib/dynamodb/DynamoDbManager.d.ts.map +1 -0
- package/lib/dynamodb/DynamoDbManager.js +66 -0
- package/lib/dynamodb/DynamoDbManager.js.map +1 -0
- package/lib/dynamodb/getDynamoDbOptions.d.ts +13 -0
- package/lib/dynamodb/getDynamoDbOptions.d.ts.map +1 -0
- package/lib/dynamodb/getDynamoDbOptions.js +15 -0
- package/lib/dynamodb/getDynamoDbOptions.js.map +1 -0
- package/lib/error/DuplicateItemError.d.ts +6 -0
- package/lib/error/DuplicateItemError.d.ts.map +1 -0
- package/lib/error/DuplicateItemError.js +12 -0
- package/lib/error/DuplicateItemError.js.map +1 -0
- package/lib/error/InvalidDataFormatError.d.ts +6 -0
- package/lib/error/InvalidDataFormatError.d.ts.map +1 -0
- package/lib/error/InvalidDataFormatError.js +12 -0
- package/lib/error/InvalidDataFormatError.js.map +1 -0
- package/lib/error/InvalidDbSchemaError.d.ts +6 -0
- package/lib/error/InvalidDbSchemaError.d.ts.map +1 -0
- package/lib/error/InvalidDbSchemaError.js +12 -0
- package/lib/error/InvalidDbSchemaError.js.map +1 -0
- package/lib/error/MissingKeyValuesError.d.ts +6 -0
- package/lib/error/MissingKeyValuesError.d.ts.map +1 -0
- package/lib/error/MissingKeyValuesError.js +12 -0
- package/lib/error/MissingKeyValuesError.js.map +1 -0
- package/lib/error/TransactionError.d.ts +6 -0
- package/lib/error/TransactionError.d.ts.map +1 -0
- package/lib/error/TransactionError.js +12 -0
- package/lib/error/TransactionError.js.map +1 -0
- package/lib/getConnectionInfo.d.ts +6 -0
- package/lib/getConnectionInfo.d.ts.map +1 -0
- package/lib/getConnectionInfo.js +30 -0
- package/lib/getConnectionInfo.js.map +1 -0
- package/lib/index.d.ts +15 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +34 -0
- package/lib/index.js.map +1 -0
- package/package.json +5 -5
- package/src/AbstractRepository.ts +26 -20
- package/src/dynamodb/AbstractDynamoDbRepository.ts +1 -1
- package/src/dynamodb/getDynamoDbOptions.ts +1 -1
- package/tsconfig.json +5 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build.js +0 -31
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AbstractDynamoDbRepository.spec.js","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.spec.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { DynamoDBDocument, TransactWriteCommandInput } from '@aws-sdk/lib-dynamodb';
|
2
|
+
export type Transaction = {
|
3
|
+
id?: string;
|
4
|
+
};
|
5
|
+
type TransactionItems = TransactWriteCommandInput['TransactItems'];
|
6
|
+
export type TransactionItem = NonNullable<TransactionItems>[number];
|
7
|
+
export declare class DynamoDbManager<TRepositories> {
|
8
|
+
client: DynamoDBDocument;
|
9
|
+
private transactionItems;
|
10
|
+
repositories: TRepositories;
|
11
|
+
constructor(client: DynamoDBDocument, repositoryCreator: (dbManager: DynamoDbManager<TRepositories>) => TRepositories);
|
12
|
+
executeInTransaction<T>(func: (transaction: Transaction) => Promise<T>): Promise<T>;
|
13
|
+
addWriteTransactionItem(transactionId: string, item: TransactionItem): void;
|
14
|
+
private executeTransaction;
|
15
|
+
private startTransaction;
|
16
|
+
private closeTransaction;
|
17
|
+
}
|
18
|
+
export {};
|
19
|
+
//# sourceMappingURL=DynamoDbManager.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DynamoDbManager.d.ts","sourceRoot":"","sources":["../../src/dynamodb/DynamoDbManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAOpF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,gBAAgB,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,qBAAa,eAAe,CAAC,aAAa;IAK/B,MAAM,EAAE,gBAAgB;IAJjC,OAAO,CAAC,gBAAgB,CAAoC;IACrD,YAAY,EAAE,aAAa,CAAC;gBAG1B,MAAM,EAAE,gBAAgB,EAC/B,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,aAAa,CAAC,KAAK,aAAa;IAMpE,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAazF,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;YAQ7D,kBAAkB;IA4BhC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,gBAAgB;CAGzB"}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DynamoDbManager = void 0;
|
4
|
+
const crypto_1 = require("crypto");
|
5
|
+
const TransactionError_1 = require("../error/TransactionError");
|
6
|
+
const api_1 = require("@opentelemetry/api");
|
7
|
+
const tracer = api_1.trace.getTracer('db-lib:DynamoDbManager');
|
8
|
+
class DynamoDbManager {
|
9
|
+
constructor(client, repositoryCreator) {
|
10
|
+
this.client = client;
|
11
|
+
this.transactionItems = {};
|
12
|
+
this.repositories = repositoryCreator(this);
|
13
|
+
}
|
14
|
+
async executeInTransaction(func) {
|
15
|
+
const transactionId = (0, crypto_1.randomUUID)();
|
16
|
+
try {
|
17
|
+
this.startTransaction(transactionId);
|
18
|
+
const value = await func({ id: transactionId });
|
19
|
+
await this.executeTransaction(transactionId);
|
20
|
+
return value;
|
21
|
+
}
|
22
|
+
finally {
|
23
|
+
this.closeTransaction(transactionId);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
addWriteTransactionItem(transactionId, item) {
|
27
|
+
if (this.transactionItems[transactionId] === undefined) {
|
28
|
+
throw new TransactionError_1.TransactionError(`No items in transaction '${transactionId}' to add transaction item to`);
|
29
|
+
}
|
30
|
+
this.transactionItems[transactionId].push(item);
|
31
|
+
}
|
32
|
+
async executeTransaction(transactionId) {
|
33
|
+
if (this.transactionItems[transactionId] === undefined) {
|
34
|
+
throw new TransactionError_1.TransactionError(`No items in transaction '${transactionId}' to execute`);
|
35
|
+
}
|
36
|
+
if (!this.transactionItems[transactionId].length) {
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
return tracer.startActiveSpan('executeTransaction', {
|
40
|
+
attributes: {
|
41
|
+
'transactionItems.length': this.transactionItems[transactionId].length,
|
42
|
+
},
|
43
|
+
}, async (span) => {
|
44
|
+
try {
|
45
|
+
return await this.client.transactWrite({
|
46
|
+
ClientRequestToken: transactionId,
|
47
|
+
TransactItems: this.transactionItems[transactionId],
|
48
|
+
});
|
49
|
+
}
|
50
|
+
finally {
|
51
|
+
span.end();
|
52
|
+
}
|
53
|
+
});
|
54
|
+
}
|
55
|
+
startTransaction(transactionId) {
|
56
|
+
if (this.transactionItems[transactionId] !== undefined) {
|
57
|
+
throw new TransactionError_1.TransactionError(`Transaction '${transactionId}' already started`);
|
58
|
+
}
|
59
|
+
this.transactionItems[transactionId] = [];
|
60
|
+
}
|
61
|
+
closeTransaction(transactionId) {
|
62
|
+
delete this.transactionItems[transactionId];
|
63
|
+
}
|
64
|
+
}
|
65
|
+
exports.DynamoDbManager = DynamoDbManager;
|
66
|
+
//# sourceMappingURL=DynamoDbManager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DynamoDbManager.js","sourceRoot":"","sources":["../../src/dynamodb/DynamoDbManager.ts"],"names":[],"mappings":";;;AACA,mCAAoC;AACpC,gEAA6D;AAC7D,4CAA2C;AAE3C,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AASzD,MAAa,eAAe;IAI1B,YACS,MAAwB,EAC/B,iBAA+E;QADxE,WAAM,GAAN,MAAM,CAAkB;QAG/B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAI,IAA8C;QACjF,MAAM,aAAa,GAAG,IAAA,mBAAU,GAAE,CAAC;QAEnC,IAAI;YACF,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACd;gBAAS;YACR,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACtC;IACH,CAAC;IAEM,uBAAuB,CAAC,aAAqB,EAAE,IAAqB;QACzE,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;YACtD,MAAM,IAAI,mCAAgB,CAAC,4BAA4B,aAAa,8BAA8B,CAAC,CAAC;SACrG;QAED,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;YACtD,MAAM,IAAI,mCAAgB,CAAC,4BAA4B,aAAa,cAAc,CAAC,CAAC;SACrF;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;YAChD,OAAO;SACR;QAED,OAAO,MAAM,CAAC,eAAe,CAC3B,oBAAoB,EACpB;YACE,UAAU,EAAE;gBACV,yBAAyB,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM;aACvE;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBACrC,kBAAkB,EAAE,aAAa;oBACjC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACpD,CAAC,CAAC;aACJ;oBAAS;gBACR,IAAI,CAAC,GAAG,EAAE,CAAC;aACZ;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,aAAqB;QAC5C,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;YACtD,MAAM,IAAI,mCAAgB,CAAC,gBAAgB,aAAa,mBAAmB,CAAC,CAAC;SAC9E;QACD,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IAEO,gBAAgB,CAAC,aAAqB;QAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;CACF;AAvED,0CAuEC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
export declare const getDynamoDbOptions: (awsRegion: string, nodeEnv: 'production' | 'development') => {
|
2
|
+
region: string;
|
3
|
+
credentials?: undefined;
|
4
|
+
endpoint?: undefined;
|
5
|
+
} | {
|
6
|
+
credentials: {
|
7
|
+
accessKeyId: string;
|
8
|
+
secretAccessKey: string;
|
9
|
+
};
|
10
|
+
endpoint: string;
|
11
|
+
region?: undefined;
|
12
|
+
};
|
13
|
+
//# sourceMappingURL=getDynamoDbOptions.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getDynamoDbOptions.d.ts","sourceRoot":"","sources":["../../src/dynamodb/getDynamoDbOptions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,cAAe,MAAM,WAAW,YAAY,GAAG,aAAa;;;;;;;;;;;CAQ1F,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getDynamoDbOptions = void 0;
|
4
|
+
const getDynamoDbOptions = (awsRegion, nodeEnv) => {
|
5
|
+
var _a;
|
6
|
+
if (nodeEnv === 'production') {
|
7
|
+
return { region: awsRegion };
|
8
|
+
}
|
9
|
+
return {
|
10
|
+
credentials: { accessKeyId: 'key', secretAccessKey: 'key' },
|
11
|
+
endpoint: process.env.CI ? 'http://dynamodb-local:8000' : (_a = process.env.DYNAMO_DB_HOST) !== null && _a !== void 0 ? _a : 'http://localhost:8000',
|
12
|
+
};
|
13
|
+
};
|
14
|
+
exports.getDynamoDbOptions = getDynamoDbOptions;
|
15
|
+
//# sourceMappingURL=getDynamoDbOptions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getDynamoDbOptions.js","sourceRoot":"","sources":["../../src/dynamodb/getDynamoDbOptions.ts"],"names":[],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,OAAqC,EAAE,EAAE;;IAC7F,IAAI,OAAO,KAAK,YAAY,EAAE;QAC5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;KAC9B;IACD,OAAO;QACL,WAAW,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;QAC3D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,cAAc,mCAAI,uBAAuB;KAChH,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DuplicateItemError.d.ts","sourceRoot":"","sources":["../../src/error/DuplicateItemError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD,IAAI,SAAwB;gBAChB,OAAO,EAAE,MAAM;CAG5B"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DuplicateItemError = void 0;
|
4
|
+
const dx_common_lib_1 = require("@squiz/dx-common-lib");
|
5
|
+
class DuplicateItemError extends dx_common_lib_1.InternalServerError {
|
6
|
+
constructor(message) {
|
7
|
+
super(message);
|
8
|
+
this.name = 'DuplicateItemError';
|
9
|
+
}
|
10
|
+
}
|
11
|
+
exports.DuplicateItemError = DuplicateItemError;
|
12
|
+
//# sourceMappingURL=DuplicateItemError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DuplicateItemError.js","sourceRoot":"","sources":["../../src/error/DuplicateItemError.ts"],"names":[],"mappings":";;;AAAA,wDAA2D;AAE3D,MAAa,kBAAmB,SAAQ,mCAAmB;IAEzD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB,SAAI,GAAG,oBAAoB,CAAC;IAG5B,CAAC;CACF;AALD,gDAKC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"InvalidDataFormatError.d.ts","sourceRoot":"","sources":["../../src/error/InvalidDataFormatError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC7D,IAAI,SAA4B;gBACpB,OAAO,EAAE,MAAM;CAG5B"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.InvalidDataFormatError = void 0;
|
4
|
+
const dx_common_lib_1 = require("@squiz/dx-common-lib");
|
5
|
+
class InvalidDataFormatError extends dx_common_lib_1.InternalServerError {
|
6
|
+
constructor(message) {
|
7
|
+
super(message);
|
8
|
+
this.name = 'InvalidDataFormatError';
|
9
|
+
}
|
10
|
+
}
|
11
|
+
exports.InvalidDataFormatError = InvalidDataFormatError;
|
12
|
+
//# sourceMappingURL=InvalidDataFormatError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"InvalidDataFormatError.js","sourceRoot":"","sources":["../../src/error/InvalidDataFormatError.ts"],"names":[],"mappings":";;;AAAA,wDAA2D;AAE3D,MAAa,sBAAuB,SAAQ,mCAAmB;IAE7D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB,SAAI,GAAG,wBAAwB,CAAC;IAGhC,CAAC;CACF;AALD,wDAKC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"InvalidDbSchemaError.d.ts","sourceRoot":"","sources":["../../src/error/InvalidDbSchemaError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,IAAI,SAA0B;gBAClB,OAAO,EAAE,MAAM;CAG5B"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.InvalidDbSchemaError = void 0;
|
4
|
+
const dx_common_lib_1 = require("@squiz/dx-common-lib");
|
5
|
+
class InvalidDbSchemaError extends dx_common_lib_1.BadRequestError {
|
6
|
+
constructor(message) {
|
7
|
+
super(message);
|
8
|
+
this.name = 'InvalidDbSchemaError';
|
9
|
+
}
|
10
|
+
}
|
11
|
+
exports.InvalidDbSchemaError = InvalidDbSchemaError;
|
12
|
+
//# sourceMappingURL=InvalidDbSchemaError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"InvalidDbSchemaError.js","sourceRoot":"","sources":["../../src/error/InvalidDbSchemaError.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AAEvD,MAAa,oBAAqB,SAAQ,+BAAe;IAEvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB,SAAI,GAAG,sBAAsB,CAAC;IAG9B,CAAC;CACF;AALD,oDAKC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"MissingKeyValuesError.d.ts","sourceRoot":"","sources":["../../src/error/MissingKeyValuesError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,IAAI,SAA2B;gBACnB,OAAO,EAAE,MAAM;CAG5B"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.MissingKeyValuesError = void 0;
|
4
|
+
const dx_common_lib_1 = require("@squiz/dx-common-lib");
|
5
|
+
class MissingKeyValuesError extends dx_common_lib_1.InternalServerError {
|
6
|
+
constructor(message) {
|
7
|
+
super(message);
|
8
|
+
this.name = 'MissingKeyValuesError';
|
9
|
+
}
|
10
|
+
}
|
11
|
+
exports.MissingKeyValuesError = MissingKeyValuesError;
|
12
|
+
//# sourceMappingURL=MissingKeyValuesError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"MissingKeyValuesError.js","sourceRoot":"","sources":["../../src/error/MissingKeyValuesError.ts"],"names":[],"mappings":";;;AAAA,wDAA2D;AAE3D,MAAa,qBAAsB,SAAQ,mCAAmB;IAE5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB,SAAI,GAAG,uBAAuB,CAAC;IAG/B,CAAC;CACF;AALD,sDAKC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"TransactionError.d.ts","sourceRoot":"","sources":["../../src/error/TransactionError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,IAAI,SAAsB;gBACd,OAAO,EAAE,MAAM;CAG5B"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TransactionError = void 0;
|
4
|
+
const dx_common_lib_1 = require("@squiz/dx-common-lib");
|
5
|
+
class TransactionError extends dx_common_lib_1.InternalServerError {
|
6
|
+
constructor(message) {
|
7
|
+
super(message);
|
8
|
+
this.name = 'TransactionError';
|
9
|
+
}
|
10
|
+
}
|
11
|
+
exports.TransactionError = TransactionError;
|
12
|
+
//# sourceMappingURL=TransactionError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"TransactionError.js","sourceRoot":"","sources":["../../src/error/TransactionError.ts"],"names":[],"mappings":";;;AAAA,wDAA2D;AAE3D,MAAa,gBAAiB,SAAQ,mCAAmB;IAEvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB,SAAI,GAAG,kBAAkB,CAAC;IAG1B,CAAC;CACF;AALD,4CAKC"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { DbConnection } from './ConnectionManager';
|
2
|
+
export declare function getConnectionInfo(config: {
|
3
|
+
databaseConnectionSecret?: string | false;
|
4
|
+
databaseConnectionString?: string | false;
|
5
|
+
}): Promise<DbConnection | string>;
|
6
|
+
//# sourceMappingURL=getConnectionInfo.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getConnectionInfo.d.ts","sourceRoot":"","sources":["../src/getConnectionInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,wBAAwB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1C,wBAAwB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3C,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,CAUjC"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getConnectionInfo = void 0;
|
4
|
+
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
5
|
+
async function getConnectionInfo(config) {
|
6
|
+
if (config.databaseConnectionSecret) {
|
7
|
+
return await getSecret(config.databaseConnectionSecret);
|
8
|
+
}
|
9
|
+
if (config.databaseConnectionString) {
|
10
|
+
return config.databaseConnectionString;
|
11
|
+
}
|
12
|
+
throw new Error(`No db connection info available`);
|
13
|
+
}
|
14
|
+
exports.getConnectionInfo = getConnectionInfo;
|
15
|
+
async function getSecret(id) {
|
16
|
+
const client = new client_secrets_manager_1.SecretsManagerClient({});
|
17
|
+
const result = await client.send(new client_secrets_manager_1.GetSecretValueCommand({ SecretId: id }));
|
18
|
+
if (result.SecretString === undefined) {
|
19
|
+
throw new Error('secret could not be found');
|
20
|
+
}
|
21
|
+
const info = JSON.parse(result.SecretString);
|
22
|
+
return {
|
23
|
+
user: info.username,
|
24
|
+
password: info.password,
|
25
|
+
host: info.host,
|
26
|
+
port: info.port,
|
27
|
+
database: info.dbname,
|
28
|
+
};
|
29
|
+
}
|
30
|
+
//# sourceMappingURL=getConnectionInfo.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getConnectionInfo.js","sourceRoot":"","sources":["../src/getConnectionInfo.ts"],"names":[],"mappings":";;;AACA,4EAA8F;AAEvF,KAAK,UAAU,iBAAiB,CAAC,MAGvC;IACC,IAAI,MAAM,CAAC,wBAAwB,EAAE;QACnC,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;KACzD;IAED,IAAI,MAAM,CAAC,wBAAwB,EAAE;QACnC,OAAO,MAAM,CAAC,wBAAwB,CAAC;KACxC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC;AAbD,8CAaC;AAED,KAAK,UAAU,SAAS,CAAC,EAAU;IACjC,MAAM,MAAM,GAAG,IAAI,6CAAoB,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,8CAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE9E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,QAAQ;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
|
package/lib/index.d.ts
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
export * from './AbstractRepository';
|
2
|
+
export * from './ConnectionManager';
|
3
|
+
export * from './dynamodb/DynamoDbManager';
|
4
|
+
export * from './dynamodb/AbstractDynamoDbRepository';
|
5
|
+
export * from './dynamodb/getDynamoDbOptions';
|
6
|
+
export * from './Migrator';
|
7
|
+
export * from './Repositories';
|
8
|
+
export * from './getConnectionInfo';
|
9
|
+
export * from './error/DuplicateItemError';
|
10
|
+
export * from './error/TransactionError';
|
11
|
+
export * from './error/MissingKeyValuesError';
|
12
|
+
export * from './error/InvalidDbSchemaError';
|
13
|
+
export * from './PostgresErrorCodes';
|
14
|
+
export { Pool, PoolClient } from 'pg';
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC"}
|
package/lib/index.js
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.Pool = void 0;
|
18
|
+
__exportStar(require("./AbstractRepository"), exports);
|
19
|
+
__exportStar(require("./ConnectionManager"), exports);
|
20
|
+
__exportStar(require("./dynamodb/DynamoDbManager"), exports);
|
21
|
+
__exportStar(require("./dynamodb/AbstractDynamoDbRepository"), exports);
|
22
|
+
__exportStar(require("./dynamodb/getDynamoDbOptions"), exports);
|
23
|
+
__exportStar(require("./Migrator"), exports);
|
24
|
+
__exportStar(require("./Repositories"), exports);
|
25
|
+
__exportStar(require("./getConnectionInfo"), exports);
|
26
|
+
__exportStar(require("./error/DuplicateItemError"), exports);
|
27
|
+
__exportStar(require("./error/TransactionError"), exports);
|
28
|
+
__exportStar(require("./error/MissingKeyValuesError"), exports);
|
29
|
+
__exportStar(require("./error/InvalidDbSchemaError"), exports);
|
30
|
+
// Postgres
|
31
|
+
__exportStar(require("./PostgresErrorCodes"), exports);
|
32
|
+
var pg_1 = require("pg");
|
33
|
+
Object.defineProperty(exports, "Pool", { enumerable: true, get: function () { return pg_1.Pool; } });
|
34
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,sDAAoC;AACpC,6DAA2C;AAC3C,wEAAsD;AACtD,gEAA8C;AAC9C,6CAA2B;AAC3B,iDAA+B;AAC/B,sDAAoC;AACpC,6DAA2C;AAC3C,2DAAyC;AACzC,gEAA8C;AAC9C,+DAA6C;AAE7C,WAAW;AACX,uDAAqC;AAErC,yBAAsC;AAA7B,0FAAA,IAAI,OAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@squiz/db-lib",
|
3
|
-
"version": "1.71.
|
3
|
+
"version": "1.71.3",
|
4
4
|
"description": "",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"private": false,
|
@@ -8,7 +8,7 @@
|
|
8
8
|
"access": "public"
|
9
9
|
},
|
10
10
|
"scripts": {
|
11
|
-
"compile": "
|
11
|
+
"compile": "tsc -b",
|
12
12
|
"test": "jest -c jest.config.ts --testMatch=\"**/*.spec.ts\" --testMatch=\"!**/*.integration.spec.ts\" --passWithNoTests",
|
13
13
|
"test:integration": "jest --testMatch=\"**/*.integration.spec.ts\"",
|
14
14
|
"test:update-snapshots": "jest -c jest.config.ts --updateSnapshot",
|
@@ -19,7 +19,7 @@
|
|
19
19
|
"devDependencies": {
|
20
20
|
"@types/jest": "28.1.8",
|
21
21
|
"@types/node": "20.12.4",
|
22
|
-
"@types/pg": "8.
|
22
|
+
"@types/pg": "^8.11.8",
|
23
23
|
"aws-sdk-client-mock": "^4.0.0",
|
24
24
|
"aws-sdk-client-mock-jest": "4.0.0",
|
25
25
|
"eslint": "8.33.0",
|
@@ -36,9 +36,9 @@
|
|
36
36
|
"@aws-sdk/client-secrets-manager": "3.651.1",
|
37
37
|
"@aws-sdk/lib-dynamodb": "^3.651.1",
|
38
38
|
"@opentelemetry/api": "^1.6.0",
|
39
|
-
"@squiz/dx-common-lib": "^1.
|
39
|
+
"@squiz/dx-common-lib": "^1.68.3",
|
40
40
|
"@squiz/dx-logger-lib": "^1.64.0",
|
41
41
|
"dotenv": "16.0.3",
|
42
|
-
"pg": "8.
|
42
|
+
"pg": "^8.12.0"
|
43
43
|
}
|
44
44
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { PoolClient, Pool } from 'pg';
|
1
|
+
import { PoolClient, Pool, escapeIdentifier } from 'pg';
|
2
2
|
import { Repositories } from './Repositories';
|
3
3
|
import { InvalidUpdateValueError } from '@squiz/dx-common-lib';
|
4
4
|
|
@@ -56,19 +56,29 @@ export abstract class AbstractRepository<SHAPE extends object, DATA_CLASS extend
|
|
56
56
|
return await this.pool.connect();
|
57
57
|
}
|
58
58
|
|
59
|
+
private sanitiseValue(value: Partial<SHAPE>) {
|
60
|
+
const sanitisedValue = Object.entries(value)
|
61
|
+
.map(([key, value]) => [this.modelPropertyToSqlColumn[key as keyof SHAPE], value] as const)
|
62
|
+
.filter(([column, _v]) => !!column);
|
63
|
+
|
64
|
+
const columns = sanitisedValue.map(([column]) => escapeIdentifier(column));
|
65
|
+
const bindingParams = sanitisedValue.map((_, index) => `$${index + 1}`);
|
66
|
+
const values = sanitisedValue.map(([_column, value]) => value);
|
67
|
+
|
68
|
+
return {
|
69
|
+
columns,
|
70
|
+
bindingParams,
|
71
|
+
values,
|
72
|
+
};
|
73
|
+
}
|
74
|
+
|
59
75
|
async create(value: SHAPE, transactionClient: PoolClient | null = null): Promise<SHAPE> {
|
60
76
|
const valueAsClass = new this.classRef(value as Record<string, unknown>);
|
61
|
-
const columns =
|
62
|
-
.map((a) => `"${this.modelPropertyToSqlColumn[a as keyof SHAPE]}"`)
|
63
|
-
.join(', ');
|
64
|
-
|
65
|
-
const values = Object.values(valueAsClass)
|
66
|
-
.map((a, index) => `$${index + 1}`)
|
67
|
-
.join(', ');
|
77
|
+
const { columns, bindingParams, values } = this.sanitiseValue(valueAsClass);
|
68
78
|
|
69
79
|
const result = await this.executeQuery(
|
70
|
-
`INSERT INTO ${this.tableName} (${columns}) VALUES (${
|
71
|
-
|
80
|
+
`INSERT INTO ${this.tableName} (${columns.join(', ')}) VALUES (${bindingParams.join(', ')}) RETURNING *`,
|
81
|
+
values,
|
72
82
|
transactionClient,
|
73
83
|
);
|
74
84
|
|
@@ -84,20 +94,16 @@ export abstract class AbstractRepository<SHAPE extends object, DATA_CLASS extend
|
|
84
94
|
throw new InvalidUpdateValueError('Failed updating the repository, update values cannot be empty');
|
85
95
|
}
|
86
96
|
const whereValues = Object.values(where);
|
87
|
-
const newValues =
|
88
|
-
|
89
|
-
const
|
90
|
-
.map((a, index) => `"${this.modelPropertyToSqlColumn[a as keyof SHAPE]}" = $${index + 1}`)
|
91
|
-
.join(', ');
|
92
|
-
|
93
|
-
const whereString = this.createWhereStringFromPartialModel(where, newValues.length);
|
97
|
+
const newValues = this.sanitiseValue(newValue);
|
98
|
+
const setValues = newValues.columns.map((c, i) => `${c} = ${newValues.bindingParams[i]}`);
|
99
|
+
const whereString = this.createWhereStringFromPartialModel(where, setValues.length);
|
94
100
|
|
95
101
|
const result = await this.executeQuery(
|
96
102
|
`UPDATE ${this.tableName}
|
97
|
-
SET ${
|
103
|
+
SET ${setValues.join(', ')}
|
98
104
|
WHERE ${whereString}
|
99
105
|
RETURNING *`,
|
100
|
-
[...
|
106
|
+
[...newValues.values, ...whereValues],
|
101
107
|
transactionClient,
|
102
108
|
);
|
103
109
|
|
@@ -112,7 +118,7 @@ export abstract class AbstractRepository<SHAPE extends object, DATA_CLASS extend
|
|
112
118
|
|
113
119
|
const result = await client.query(`DELETE FROM ${this.tableName} WHERE ${whereString}`, Object.values(where));
|
114
120
|
|
115
|
-
return result.rowCount;
|
121
|
+
return result.rowCount ?? 0;
|
116
122
|
} finally {
|
117
123
|
if (client && !transactionClient) {
|
118
124
|
client.release();
|
@@ -191,7 +191,7 @@ export abstract class AbstractDynamoDbRepository<SHAPE extends object, DATA_CLAS
|
|
191
191
|
updateExpression.push(`${propName} = ${propValue}`);
|
192
192
|
expressionAttributeNames[propName] = modelProperty;
|
193
193
|
|
194
|
-
expressionAttributeValues[propValue] = newValue[modelProperty as keyof SHAPE];
|
194
|
+
expressionAttributeValues[propValue] = newValue[modelProperty as keyof SHAPE] ?? null;
|
195
195
|
}
|
196
196
|
|
197
197
|
const updateCommandInput = {
|
@@ -4,6 +4,6 @@ export const getDynamoDbOptions = (awsRegion: string, nodeEnv: 'production' | 'd
|
|
4
4
|
}
|
5
5
|
return {
|
6
6
|
credentials: { accessKeyId: 'key', secretAccessKey: 'key' },
|
7
|
-
endpoint: process.env.CI ? 'http://dynamodb-local:8000' : 'http://localhost:8000',
|
7
|
+
endpoint: process.env.CI ? 'http://dynamodb-local:8000' : process.env.DYNAMO_DB_HOST ?? 'http://localhost:8000',
|
8
8
|
};
|
9
9
|
};
|
package/tsconfig.json
CHANGED
@@ -3,9 +3,12 @@
|
|
3
3
|
"compilerOptions": {
|
4
4
|
"outDir": "lib/",
|
5
5
|
"resolveJsonModule": false,
|
6
|
+
"module": "Node16",
|
7
|
+
"moduleResolution": "Node16",
|
6
8
|
"composite": true,
|
7
|
-
"
|
8
|
-
"
|
9
|
+
"rootDir": "./src",
|
10
|
+
"declaration": true,
|
11
|
+
"declarationMap": true
|
9
12
|
},
|
10
13
|
"references": [
|
11
14
|
{
|