@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/AbstractRepository.d.ts +57 -0
  3. package/lib/AbstractRepository.d.ts.map +1 -0
  4. package/lib/AbstractRepository.integration.spec.d.ts +2 -0
  5. package/lib/AbstractRepository.integration.spec.d.ts.map +1 -0
  6. package/lib/AbstractRepository.integration.spec.js +118 -0
  7. package/lib/AbstractRepository.integration.spec.js.map +1 -0
  8. package/lib/AbstractRepository.js +187 -0
  9. package/lib/AbstractRepository.js.map +1 -0
  10. package/lib/ConnectionManager.d.ts +26 -0
  11. package/lib/ConnectionManager.d.ts.map +1 -0
  12. package/lib/ConnectionManager.js +58 -0
  13. package/lib/ConnectionManager.js.map +1 -0
  14. package/lib/Migrator.d.ts +25 -0
  15. package/lib/Migrator.d.ts.map +1 -0
  16. package/lib/Migrator.js +160 -0
  17. package/lib/Migrator.js.map +1 -0
  18. package/lib/PostgresErrorCodes.d.ts +269 -0
  19. package/lib/PostgresErrorCodes.d.ts.map +1 -0
  20. package/lib/PostgresErrorCodes.js +274 -0
  21. package/lib/PostgresErrorCodes.js.map +1 -0
  22. package/lib/Repositories.d.ts +3 -0
  23. package/lib/Repositories.d.ts.map +1 -0
  24. package/lib/Repositories.js +3 -0
  25. package/lib/Repositories.js.map +1 -0
  26. package/lib/dynamodb/AbstractDynamoDbRepository.d.ts +162 -0
  27. package/lib/dynamodb/AbstractDynamoDbRepository.d.ts.map +1 -0
  28. package/lib/dynamodb/AbstractDynamoDbRepository.js +367 -0
  29. package/lib/dynamodb/AbstractDynamoDbRepository.js.map +1 -0
  30. package/lib/dynamodb/AbstractDynamoDbRepository.spec.d.ts +27 -0
  31. package/lib/dynamodb/AbstractDynamoDbRepository.spec.d.ts.map +1 -0
  32. package/lib/dynamodb/AbstractDynamoDbRepository.spec.js +698 -0
  33. package/lib/dynamodb/AbstractDynamoDbRepository.spec.js.map +1 -0
  34. package/lib/dynamodb/DynamoDbManager.d.ts +19 -0
  35. package/lib/dynamodb/DynamoDbManager.d.ts.map +1 -0
  36. package/lib/dynamodb/DynamoDbManager.js +66 -0
  37. package/lib/dynamodb/DynamoDbManager.js.map +1 -0
  38. package/lib/dynamodb/getDynamoDbOptions.d.ts +13 -0
  39. package/lib/dynamodb/getDynamoDbOptions.d.ts.map +1 -0
  40. package/lib/dynamodb/getDynamoDbOptions.js +15 -0
  41. package/lib/dynamodb/getDynamoDbOptions.js.map +1 -0
  42. package/lib/error/DuplicateItemError.d.ts +6 -0
  43. package/lib/error/DuplicateItemError.d.ts.map +1 -0
  44. package/lib/error/DuplicateItemError.js +12 -0
  45. package/lib/error/DuplicateItemError.js.map +1 -0
  46. package/lib/error/InvalidDataFormatError.d.ts +6 -0
  47. package/lib/error/InvalidDataFormatError.d.ts.map +1 -0
  48. package/lib/error/InvalidDataFormatError.js +12 -0
  49. package/lib/error/InvalidDataFormatError.js.map +1 -0
  50. package/lib/error/InvalidDbSchemaError.d.ts +6 -0
  51. package/lib/error/InvalidDbSchemaError.d.ts.map +1 -0
  52. package/lib/error/InvalidDbSchemaError.js +12 -0
  53. package/lib/error/InvalidDbSchemaError.js.map +1 -0
  54. package/lib/error/MissingKeyValuesError.d.ts +6 -0
  55. package/lib/error/MissingKeyValuesError.d.ts.map +1 -0
  56. package/lib/error/MissingKeyValuesError.js +12 -0
  57. package/lib/error/MissingKeyValuesError.js.map +1 -0
  58. package/lib/error/TransactionError.d.ts +6 -0
  59. package/lib/error/TransactionError.d.ts.map +1 -0
  60. package/lib/error/TransactionError.js +12 -0
  61. package/lib/error/TransactionError.js.map +1 -0
  62. package/lib/getConnectionInfo.d.ts +6 -0
  63. package/lib/getConnectionInfo.d.ts.map +1 -0
  64. package/lib/getConnectionInfo.js +30 -0
  65. package/lib/getConnectionInfo.js.map +1 -0
  66. package/lib/index.d.ts +15 -0
  67. package/lib/index.d.ts.map +1 -0
  68. package/lib/index.js +34 -0
  69. package/lib/index.js.map +1 -0
  70. package/package.json +5 -5
  71. package/src/AbstractRepository.ts +26 -20
  72. package/src/dynamodb/AbstractDynamoDbRepository.ts +1 -1
  73. package/src/dynamodb/getDynamoDbOptions.ts +1 -1
  74. package/tsconfig.json +5 -2
  75. package/tsconfig.tsbuildinfo +1 -1
  76. 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,6 @@
1
+ import { InternalServerError } from '@squiz/dx-common-lib';
2
+ export declare class DuplicateItemError extends InternalServerError {
3
+ name: string;
4
+ constructor(message: string);
5
+ }
6
+ //# sourceMappingURL=DuplicateItemError.d.ts.map
@@ -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,6 @@
1
+ import { InternalServerError } from '@squiz/dx-common-lib';
2
+ export declare class InvalidDataFormatError extends InternalServerError {
3
+ name: string;
4
+ constructor(message: string);
5
+ }
6
+ //# sourceMappingURL=InvalidDataFormatError.d.ts.map
@@ -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,6 @@
1
+ import { BadRequestError } from '@squiz/dx-common-lib';
2
+ export declare class InvalidDbSchemaError extends BadRequestError {
3
+ name: string;
4
+ constructor(message: string);
5
+ }
6
+ //# sourceMappingURL=InvalidDbSchemaError.d.ts.map
@@ -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,6 @@
1
+ import { InternalServerError } from '@squiz/dx-common-lib';
2
+ export declare class MissingKeyValuesError extends InternalServerError {
3
+ name: string;
4
+ constructor(message: string);
5
+ }
6
+ //# sourceMappingURL=MissingKeyValuesError.d.ts.map
@@ -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,6 @@
1
+ import { InternalServerError } from '@squiz/dx-common-lib';
2
+ export declare class TransactionError extends InternalServerError {
3
+ name: string;
4
+ constructor(message: string);
5
+ }
6
+ //# sourceMappingURL=TransactionError.d.ts.map
@@ -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
@@ -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.1",
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": "node build.js && tsc",
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.6.6",
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.66.4",
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.9.0"
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 = Object.keys(valueAsClass)
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 (${values}) RETURNING *`,
71
- Object.values(valueAsClass),
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 = Object.values(newValue);
88
-
89
- const setString = Object.keys(newValue)
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 ${setString}
103
+ SET ${setValues.join(', ')}
98
104
  WHERE ${whereString}
99
105
  RETURNING *`,
100
- [...Object.values(newValues), ...Object.values(whereValues)],
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
- "emitDeclarationOnly": true,
8
- "rootDir": "./src"
9
+ "rootDir": "./src",
10
+ "declaration": true,
11
+ "declarationMap": true
9
12
  },
10
13
  "references": [
11
14
  {