@creator.co/wapi 1.7.4 → 1.7.5-alpha1

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.
Files changed (35) hide show
  1. package/dist/package-lock.json +1115 -171
  2. package/dist/package.json +3 -1
  3. package/dist/src/Database/DatabaseManager.d.ts +2 -0
  4. package/dist/src/Database/DatabaseManager.js +2 -0
  5. package/dist/src/Database/DatabaseManager.js.map +1 -1
  6. package/dist/src/Database/DatabaseTransaction.js +1 -1
  7. package/dist/src/Database/DatabaseTransaction.js.map +1 -1
  8. package/dist/src/Database/index.d.ts +3 -1
  9. package/dist/src/Database/index.js +5 -1
  10. package/dist/src/Database/index.js.map +1 -1
  11. package/dist/src/Database/integrations/dynamo/DynamoDatabase.d.ts +11 -0
  12. package/dist/src/Database/integrations/dynamo/DynamoDatabase.js +38 -0
  13. package/dist/src/Database/integrations/dynamo/DynamoDatabase.js.map +1 -0
  14. package/dist/src/Database/integrations/dynamo/DynamoTransaction.d.ts +12 -0
  15. package/dist/src/Database/integrations/dynamo/DynamoTransaction.js +30 -0
  16. package/dist/src/Database/integrations/dynamo/DynamoTransaction.js.map +1 -0
  17. package/dist/src/Database/integrations/kysely/KyselyDatabase.js +1 -1
  18. package/dist/src/Database/integrations/kysely/KyselyDatabase.js.map +1 -1
  19. package/dist/src/Database/integrations/pgsql/PostgresDatabase.d.ts +1 -1
  20. package/dist/src/Database/integrations/pgsql/PostgresDatabase.js +1 -1
  21. package/dist/src/Database/integrations/pgsql/PostgresDatabase.js.map +1 -1
  22. package/dist/src/Database/types.d.ts +10 -3
  23. package/package.json +3 -1
  24. package/src/Database/DatabaseManager.ts +3 -1
  25. package/src/Database/DatabaseTransaction.ts +1 -1
  26. package/src/Database/index.ts +5 -0
  27. package/src/Database/integrations/dynamo/DynamoDatabase.ts +34 -0
  28. package/src/Database/integrations/dynamo/DynamoTransaction.ts +29 -0
  29. package/src/Database/integrations/kysely/KyselyDatabase.ts +1 -1
  30. package/src/Database/integrations/pgsql/PostgresDatabase.ts +1 -1
  31. package/src/Database/types.ts +16 -6
  32. package/tests/Database/DatabaseManager.test.ts +24 -1
  33. package/tests/Database/integrations/knex/KnexTransaction.test.ts +1 -1
  34. package/tests/Database/integrations/kysely/KyselyTransaction.test.ts +1 -1
  35. package/tests/Database/integrations/pg/PostgresTransaction.test.ts +1 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creator.co/wapi",
3
- "version": "1.7.4",
3
+ "version": "1.7.5-alpha1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,12 +18,14 @@
18
18
  "author": "",
19
19
  "license": "ISC",
20
20
  "dependencies": {
21
+ "@aws-sdk/client-dynamodb": "^3.574.0",
21
22
  "@aws-sdk/client-kms": "^3.556.0",
22
23
  "@aws-sdk/client-secrets-manager": "3.556",
23
24
  "@aws-sdk/client-ses": "3.556",
24
25
  "@aws-sdk/client-sns": "3.556",
25
26
  "@aws-sdk/client-ssm": "3.556",
26
27
  "@aws-sdk/credential-provider-node": "3.556",
28
+ "@smithy/node-http-handler": "^3.0.0",
27
29
  "@types/email-templates": "^10.0.1",
28
30
  "@types/nodemailer": "^6.4.10",
29
31
  "@types/object-hash": "^3.0.4",
@@ -1,3 +1,4 @@
1
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js';
1
2
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js';
2
3
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js';
3
4
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js';
@@ -13,6 +14,7 @@ export declare const DATABASES: {
13
14
  knex: typeof KnexDatabase;
14
15
  pg: typeof PostgresDatabase;
15
16
  kysely: typeof KyselyDatabase;
17
+ dynamo: typeof DynamoDatabase;
16
18
  };
17
19
  /**
18
20
  * Manages the creation and storage of database instances.
@@ -1,4 +1,5 @@
1
1
  import hash from 'object-hash';
2
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js';
2
3
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js';
3
4
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js';
4
5
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js';
@@ -13,6 +14,7 @@ export const DATABASES = {
13
14
  knex: KnexDatabase,
14
15
  pg: PostgresDatabase,
15
16
  kysely: KyselyDatabase,
17
+ dynamo: DynamoDatabase,
16
18
  };
17
19
  /**
18
20
  * Manages the creation and storage of database instances.
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseManager.js","sourceRoot":"","sources":["../../../src/Database/DatabaseManager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAA;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAG3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,gBAAgB;IACpB,MAAM,EAAE,cAAc;CACvB,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAA5B;QAME;;;WAGG;QACK,cAAS,GAAqB,SAAS,CAAA;QAC/C;;;WAGG;QACK,cAAS,GAAgD,EAAE,CAAA;IA6BrE,CAAC;IA3BC;;;;OAIG;IACI,MAAM,CACX,MAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAQ,CAAA;QAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAc,MAAa,CAAC,CAAA;QAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAA;QACrC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACK,aAAa,CACnB,MAA8D;QAE9D,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAa,CAAQ,CAAA;IAC9D,CAAC;;AA1CD;;;GAGG;AACoB,wBAAQ,GAAG,IAAI,eAAe,EAAE,AAAxB,CAAwB"}
1
+ {"version":3,"file":"DatabaseManager.js","sourceRoot":"","sources":["../../../src/Database/DatabaseManager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAG3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,gBAAgB;IACpB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;CACvB,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAA5B;QAME;;;WAGG;QACK,cAAS,GAAqB,SAAS,CAAA;QAC/C;;;WAGG;QACK,cAAS,GAAgD,EAAE,CAAA;IA6BrE,CAAC;IA3BC;;;;OAIG;IACI,MAAM,CACX,MAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAQ,CAAA;QAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAc,MAAa,CAAC,CAAA;QAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAA;QACrC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACK,aAAa,CACnB,MAAmF;QAEnF,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAa,CAAQ,CAAA;IAC9D,CAAC;;AA1CD;;;GAGG;AACoB,wBAAQ,GAAG,IAAI,eAAe,EAAE,AAAxB,CAAwB"}
@@ -75,7 +75,7 @@ export class DatabaseTransaction extends Function {
75
75
  */
76
76
  this.closeSuccess = () => __awaiter(this, void 0, void 0, function* () {
77
77
  if (this._isOpen) {
78
- if (this.database.config.autoCommit) {
78
+ if (this.database.config['autoCommit']) {
79
79
  yield this.doCommit();
80
80
  }
81
81
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseTransaction.js","sourceRoot":"","sources":["../../../src/Database/DatabaseTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseTransaction.js","sourceRoot":"","sources":["../../../src/Database/DatabaseTransaction.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { Database } from './Database.js';
2
2
  import { DatabaseManager } from './DatabaseManager.js';
3
3
  import { DatabaseTransaction } from './DatabaseTransaction.js';
4
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js';
5
+ import { DynamoTransaction } from './integrations/dynamo/DynamoTransaction.js';
4
6
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js';
5
7
  import { KnexTransaction } from './integrations/knex/KnexTransaction.js';
6
8
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js';
@@ -8,4 +10,4 @@ import { KyselyTransaction } from './integrations/kysely/KyselyTransaction.js';
8
10
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js';
9
11
  import { PostgresTransaction } from './integrations/pgsql/PostgresTransaction.js';
10
12
  import { DbConfig } from './types.js';
11
- export { DatabaseTransaction, Database, DatabaseManager, DbConfig, KnexTransaction, KnexDatabase, PostgresTransaction, PostgresDatabase, KyselyTransaction, KyselyDatabase, };
13
+ export { DatabaseTransaction, Database, DatabaseManager, DbConfig, KnexTransaction, KnexDatabase, PostgresTransaction, PostgresDatabase, KyselyTransaction, KyselyDatabase, DynamoTransaction, DynamoDatabase, };
@@ -1,6 +1,8 @@
1
1
  import { Database } from './Database.js';
2
2
  import { DatabaseManager } from './DatabaseManager.js';
3
3
  import { DatabaseTransaction } from './DatabaseTransaction.js';
4
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js';
5
+ import { DynamoTransaction } from './integrations/dynamo/DynamoTransaction.js';
4
6
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js';
5
7
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js';
6
8
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js';
@@ -8,5 +10,7 @@ export {
8
10
  // Abstracts
9
11
  DatabaseTransaction, Database,
10
12
  // 'Entrypoints'
11
- DatabaseManager, KnexDatabase, PostgresDatabase, KyselyDatabase, };
13
+ DatabaseManager, KnexDatabase, PostgresDatabase, KyselyDatabase,
14
+ // Dynamo
15
+ DynamoTransaction, DynamoDatabase, };
12
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAI3E,OAAO;AACL,YAAY;AACZ,mBAAmB,EACnB,QAAQ;AACR,gBAAgB;AAChB,eAAe,EAIf,YAAY,EAGZ,gBAAgB,EAGhB,cAAc,GACf,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAI3E,OAAO;AACL,YAAY;AACZ,mBAAmB,EACnB,QAAQ;AACR,gBAAgB;AAChB,eAAe,EAIf,YAAY,EAGZ,gBAAgB,EAGhB,cAAc;AACd,SAAS;AACT,iBAAiB,EACjB,cAAc,GACf,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { DynamoTransaction } from './DynamoTransaction.js';
3
+ import { Database } from '../../Database.js';
4
+ import type { DbConfig } from '../../types.js';
5
+ export declare class DynamoDatabase extends Database<DynamoTransaction> {
6
+ private static dynamoProvider;
7
+ readonly client: DynamoDBClient;
8
+ constructor(config: DbConfig<'dynamo'>);
9
+ transaction(): Promise<DynamoTransaction>;
10
+ private providerFactory;
11
+ }
@@ -0,0 +1,38 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Agent } from 'https';
11
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
12
+ import { NodeHttpHandler } from '@smithy/node-http-handler';
13
+ import { DynamoTransaction } from './DynamoTransaction.js';
14
+ import { Database } from '../../Database.js';
15
+ export class DynamoDatabase extends Database {
16
+ constructor(config) {
17
+ super(config);
18
+ this.client = this.providerFactory(config);
19
+ }
20
+ transaction() {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ return DynamoTransaction.newTransaction(this.client, this);
23
+ });
24
+ }
25
+ providerFactory(config) {
26
+ return new DynamoDatabase.dynamoProvider({
27
+ region: config.region,
28
+ maxAttempts: config.maxAttempts,
29
+ requestHandler: new NodeHttpHandler({
30
+ connectionTimeout: config.connectionTimeout,
31
+ socketTimeout: config.connectionTimeout,
32
+ httpsAgent: new Agent({ keepAlive: false, maxSockets: 50, rejectUnauthorized: true }),
33
+ }),
34
+ });
35
+ }
36
+ }
37
+ DynamoDatabase.dynamoProvider = DynamoDBClient;
38
+ //# sourceMappingURL=DynamoDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamoDatabase.js","sourceRoot":"","sources":["../../../../../src/Database/integrations/dynamo/DynamoDatabase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,MAAM,OAAO,cAAe,SAAQ,QAA2B;IAI7D,YAAmB,MAA0B;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;IAEqB,WAAW;;YAC/B,OAAO,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;KAAA;IAEO,eAAe,CAAC,MAA0B;QAChD,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,cAAc,EAAE,IAAI,eAAe,CAAC;gBAClC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,aAAa,EAAE,MAAM,CAAC,iBAAiB;gBACvC,UAAU,EAAE,IAAI,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aACtF,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;;AAtBc,6BAAc,GAAG,cAAc,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { DynamoDatabase } from './DynamoDatabase.js';
3
+ import { DatabaseTransaction } from '../../DatabaseTransaction.js';
4
+ export declare class DynamoTransaction extends DatabaseTransaction {
5
+ readonly writer: DynamoDBClient;
6
+ protected database: DynamoDatabase;
7
+ private constructor();
8
+ static newTransaction(writer: DynamoDBClient, database: DynamoDatabase): Promise<DynamoTransaction>;
9
+ protected doBegin: () => Promise<void>;
10
+ protected doCommit: () => Promise<void>;
11
+ protected doRollback: () => Promise<void>;
12
+ }
@@ -0,0 +1,30 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { DatabaseTransaction } from '../../DatabaseTransaction.js';
11
+ export class DynamoTransaction extends DatabaseTransaction {
12
+ constructor(writer, database) {
13
+ super(writer, database);
14
+ this.doBegin = () => __awaiter(this, void 0, void 0, function* () { });
15
+ this.doCommit = () => {
16
+ return Promise.resolve();
17
+ };
18
+ this.doRollback = () => {
19
+ return Promise.resolve();
20
+ };
21
+ }
22
+ static newTransaction(writer, database) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const tx = new DynamoTransaction(writer, database);
25
+ yield tx.begin(); // defaults to opened
26
+ return DatabaseTransaction.proxyInstance(tx);
27
+ });
28
+ }
29
+ }
30
+ //# sourceMappingURL=DynamoTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamoTransaction.js","sourceRoot":"","sources":["../../../../../src/Database/integrations/dynamo/DynamoTransaction.ts"],"names":[],"mappings":";;;;;;;;;AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IAGxD,YAAoB,MAAsB,EAAE,QAAwB;QAClE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAYf,YAAO,GAAG,GAAS,EAAE,gDAAE,CAAC,CAAA,CAAA;QACxB,aAAQ,GAAG,GAAG,EAAE;YACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC,CAAA;QACS,eAAU,GAAG,GAAG,EAAE;YAC1B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC,CAAA;IAjBD,CAAC;IAEM,MAAM,CAAO,cAAc,CAChC,MAAsB,EACtB,QAAwB;;YAExB,MAAM,EAAE,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAClD,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA,CAAC,qBAAqB;YACtC,OAAO,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAQ,CAAA;QACrD,CAAC;KAAA;CASF"}
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { CamelCasePlugin, Kysely, PostgresDialect } from 'kysely';
11
- import pg from 'pg';
11
+ import * as pg from 'pg';
12
12
  import { KyselyTransactionImpl } from './KyselyTransaction.js';
13
13
  import { Database } from '../../Database.js';
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"KyselyDatabase.js","sourceRoot":"","sources":["../../../../../src/Database/integrations/kysely/KyselyDatabase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACjE,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAqB,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C;;;GAGG;AACH,MAAM,OAAO,cAAiC,SAAQ,QAAqC;IAmCzF;;;;OAIG;IACH,YAAmB,MAA0B;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED;;;OAGG;IACmB,WAAW;;YAC/B,OAAO,qBAAqB,CAAC,cAAc,CAAW,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3F,CAAC;KAAA;IACD;;;;OAIG;IACK,cAAc,CAAC,MAAoB;QACzC,OAAO,IAAI,cAAc,CAAC,gBAAgB,CAAC;YACzC,IAAI,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC;gBAClC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,MAAM,CAAC,cAAc;aAC3B,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;IACD;;;;OAIG;IACK,eAAe,CAAC,OAAwB;QAC9C,OAAO,IAAI,cAAc,CAAC,cAAc,CAAW;YACjD,OAAO;YACP,OAAO,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;SACjC,CAAC,CAAA;IACJ,CAAC;;AAnFD;;;GAGG;AACY,+BAAgB,GAAG,eAAe,CAAA;AACjD;;;GAGG;AACY,6BAAc,GAAG,MAAM,CAAA;AACtC;;;GAGG;AACY,yBAAU,GAAG,EAAE,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"KyselyDatabase.js","sourceRoot":"","sources":["../../../../../src/Database/integrations/kysely/KyselyDatabase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACjE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,OAAO,EAAqB,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C;;;GAGG;AACH,MAAM,OAAO,cAAiC,SAAQ,QAAqC;IAmCzF;;;;OAIG;IACH,YAAmB,MAA0B;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED;;;OAGG;IACmB,WAAW;;YAC/B,OAAO,qBAAqB,CAAC,cAAc,CAAW,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3F,CAAC;KAAA;IACD;;;;OAIG;IACK,cAAc,CAAC,MAAoB;QACzC,OAAO,IAAI,cAAc,CAAC,gBAAgB,CAAC;YACzC,IAAI,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC;gBAClC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,MAAM,CAAC,cAAc;aAC3B,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;IACD;;;;OAIG;IACK,eAAe,CAAC,OAAwB;QAC9C,OAAO,IAAI,cAAc,CAAC,cAAc,CAAW;YACjD,OAAO;YACP,OAAO,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;SACjC,CAAC,CAAA;IACJ,CAAC;;AAnFD;;;GAGG;AACY,+BAAgB,GAAG,eAAe,CAAA;AACjD;;;GAGG;AACY,6BAAc,GAAG,MAAM,CAAA;AACtC;;;GAGG;AACY,yBAAU,GAAG,EAAE,CAAC,IAAI,CAAA"}
@@ -1,4 +1,4 @@
1
- import pg from 'pg';
1
+ import * as pg from 'pg';
2
2
  import { PostgresTransaction } from './PostgresTransaction.js';
3
3
  import { Database } from '../../Database.js';
4
4
  import type { DbConfig } from '../../types.js';
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import pg from 'pg';
10
+ import * as pg from 'pg';
11
11
  import { PostgresTransactionImpl } from './PostgresTransaction.js';
12
12
  import { Database } from '../../Database.js';
13
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PostgresDatabase.js","sourceRoot":"","sources":["../../../../../src/Database/integrations/pgsql/PostgresDatabase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAuB,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAA6B;IAgBjE;;;;OAIG;IACH,YAAmB,MAAsB;QACvC,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,MAAM,CAAC,WAAW;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACpF,CAAC;IAED;;;OAGG;IACmB,WAAW;;YAC/B,OAAO,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACnF,CAAC;KAAA;IACO,eAAe,CAAC,MAAoB;QAC1C,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,EAAE,MAAM,CAAC,cAAc;SAC3B,CAAC,CAAA;IACJ,CAAC;;AA1CD;;;GAGG;AACY,2BAAU,GAAG,EAAE,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"PostgresDatabase.js","sourceRoot":"","sources":["../../../../../src/Database/integrations/pgsql/PostgresDatabase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,OAAO,EAAuB,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAA6B;IAgBjE;;;;OAIG;IACH,YAAmB,MAAsB;QACvC,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,MAAM,CAAC,WAAW;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACpF,CAAC;IAED;;;OAGG;IACmB,WAAW;;YAC/B,OAAO,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACnF,CAAC;KAAA;IACO,eAAe,CAAC,MAAoB;QAC1C,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,EAAE,MAAM,CAAC,cAAc;SAC3B,CAAC,CAAA;IACJ,CAAC;;AA1CD;;;GAGG;AACY,2BAAU,GAAG,EAAE,CAAC,IAAI,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { Database } from './Database.js';
2
2
  import { DATABASES } from './DatabaseManager.js';
3
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js';
3
4
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js';
4
5
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js';
5
6
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js';
@@ -19,6 +20,7 @@ export type DatabaseClass<T> = {
19
20
  knex: new (...args: any[]) => KnexDatabase;
20
21
  pg: new (...args: any[]) => PostgresDatabase;
21
22
  kysely: new (...args: any[]) => KyselyDatabase<T>;
23
+ dynamo: new (...args: any[]) => DynamoDatabase;
22
24
  };
23
25
  /**
24
26
  * Represents a specific implementation type for a database based on the provided DatabaseType.
@@ -67,11 +69,16 @@ export type DbBaseConfig = {
67
69
  * @property {boolean} [convertCamelToSnake] - Whether to convert camel case to snake case for 'knex' database type.
68
70
  * @property {DbBaseConfig} [readReplica] - The read replica configuration for '
69
71
  */
70
- export type DbConfig<S extends DatabaseType> = DbBaseConfig & {
72
+ export type DbConfig<S extends DatabaseType> = {
71
73
  type: S;
72
- } & (S extends 'knex' ? {
74
+ } & (S extends 'knex' ? DbBaseConfig & {
73
75
  driver?: string;
74
76
  convertCamelToSnake?: boolean;
75
- } : unknown) & (S extends 'pg' | 'kysely' ? {
77
+ } : unknown) & (S extends 'pg' | 'kysely' ? DbBaseConfig & {
76
78
  readReplica?: DbBaseConfig;
79
+ } : unknown) & (S extends 'dynamo' ? {
80
+ region: string;
81
+ tableName: string;
82
+ maxAttempts?: number;
83
+ connectionTimeout?: number;
77
84
  } : unknown);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creator.co/wapi",
3
- "version": "1.7.4",
3
+ "version": "1.7.5-alpha1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,12 +18,14 @@
18
18
  "author": "",
19
19
  "license": "ISC",
20
20
  "dependencies": {
21
+ "@aws-sdk/client-dynamodb": "^3.574.0",
21
22
  "@aws-sdk/client-kms": "^3.556.0",
22
23
  "@aws-sdk/client-secrets-manager": "3.556",
23
24
  "@aws-sdk/client-ses": "3.556",
24
25
  "@aws-sdk/client-sns": "3.556",
25
26
  "@aws-sdk/client-ssm": "3.556",
26
27
  "@aws-sdk/credential-provider-node": "3.556",
28
+ "@smithy/node-http-handler": "^3.0.0",
27
29
  "@types/email-templates": "^10.0.1",
28
30
  "@types/nodemailer": "^6.4.10",
29
31
  "@types/object-hash": "^3.0.4",
@@ -1,5 +1,6 @@
1
1
  import hash from 'object-hash'
2
2
 
3
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js'
3
4
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js'
4
5
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js'
5
6
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js'
@@ -16,6 +17,7 @@ export const DATABASES = {
16
17
  knex: KnexDatabase,
17
18
  pg: PostgresDatabase,
18
19
  kysely: KyselyDatabase,
20
+ dynamo: DynamoDatabase,
19
21
  }
20
22
 
21
23
  /**
@@ -61,7 +63,7 @@ export class DatabaseManager {
61
63
  * @returns {DatabaseImplType<S, DBSchema>} An instance of the specified database connection.
62
64
  */
63
65
  private instantiateDb<S extends DatabaseType, DBSchema>(
64
- config: DbConfig<'knex'> | DbConfig<'pg'> | DbConfig<'kysely'>
66
+ config: DbConfig<'knex'> | DbConfig<'pg'> | DbConfig<'kysely'> | DbConfig<'dynamo'>
65
67
  ): DatabaseImplType<S, DBSchema> {
66
68
  return new this.databases[config.type](config as any) as any
67
69
  }
@@ -131,7 +131,7 @@ export abstract class DatabaseTransaction extends Function {
131
131
  */
132
132
  public closeSuccess = async () => {
133
133
  if (this._isOpen) {
134
- if (this.database.config.autoCommit) {
134
+ if (this.database.config['autoCommit']) {
135
135
  await this.doCommit()
136
136
  } else {
137
137
  await this.doRollback()
@@ -1,6 +1,8 @@
1
1
  import { Database } from './Database.js'
2
2
  import { DatabaseManager } from './DatabaseManager.js'
3
3
  import { DatabaseTransaction } from './DatabaseTransaction.js'
4
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js'
5
+ import { DynamoTransaction } from './integrations/dynamo/DynamoTransaction.js'
4
6
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js'
5
7
  import { KnexTransaction } from './integrations/knex/KnexTransaction.js'
6
8
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js'
@@ -25,4 +27,7 @@ export {
25
27
  // Kysely
26
28
  KyselyTransaction,
27
29
  KyselyDatabase,
30
+ // Dynamo
31
+ DynamoTransaction,
32
+ DynamoDatabase,
28
33
  }
@@ -0,0 +1,34 @@
1
+ import { Agent } from 'https'
2
+
3
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb'
4
+ import { NodeHttpHandler } from '@smithy/node-http-handler'
5
+
6
+ import { DynamoTransaction } from './DynamoTransaction.js'
7
+ import { Database } from '../../Database.js'
8
+ import type { DbConfig } from '../../types.js'
9
+
10
+ export class DynamoDatabase extends Database<DynamoTransaction> {
11
+ private static dynamoProvider = DynamoDBClient
12
+ public readonly client: DynamoDBClient
13
+
14
+ public constructor(config: DbConfig<'dynamo'>) {
15
+ super(config)
16
+ this.client = this.providerFactory(config)
17
+ }
18
+
19
+ public override async transaction(): Promise<DynamoTransaction> {
20
+ return DynamoTransaction.newTransaction(this.client, this)
21
+ }
22
+
23
+ private providerFactory(config: DbConfig<'dynamo'>) {
24
+ return new DynamoDatabase.dynamoProvider({
25
+ region: config.region,
26
+ maxAttempts: config.maxAttempts,
27
+ requestHandler: new NodeHttpHandler({
28
+ connectionTimeout: config.connectionTimeout,
29
+ socketTimeout: config.connectionTimeout,
30
+ httpsAgent: new Agent({ keepAlive: false, maxSockets: 50, rejectUnauthorized: true }),
31
+ }),
32
+ })
33
+ }
34
+ }
@@ -0,0 +1,29 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb'
2
+
3
+ import { DynamoDatabase } from './DynamoDatabase.js'
4
+ import { DatabaseTransaction } from '../../DatabaseTransaction.js'
5
+
6
+ export class DynamoTransaction extends DatabaseTransaction {
7
+ public readonly writer: DynamoDBClient
8
+ protected database: DynamoDatabase
9
+ private constructor(writer: DynamoDBClient, database: DynamoDatabase) {
10
+ super(writer, database)
11
+ }
12
+
13
+ public static async newTransaction(
14
+ writer: DynamoDBClient,
15
+ database: DynamoDatabase
16
+ ): Promise<DynamoTransaction> {
17
+ const tx = new DynamoTransaction(writer, database)
18
+ await tx.begin() // defaults to opened
19
+ return DatabaseTransaction.proxyInstance(tx) as any
20
+ }
21
+
22
+ protected doBegin = async () => {}
23
+ protected doCommit = () => {
24
+ return Promise.resolve()
25
+ }
26
+ protected doRollback = () => {
27
+ return Promise.resolve()
28
+ }
29
+ }
@@ -1,5 +1,5 @@
1
1
  import { CamelCasePlugin, Kysely, PostgresDialect } from 'kysely'
2
- import pg from 'pg'
2
+ import * as pg from 'pg'
3
3
 
4
4
  import { KyselyTransaction, KyselyTransactionImpl } from './KyselyTransaction.js'
5
5
  import { Database } from '../../Database.js'
@@ -1,4 +1,4 @@
1
- import pg from 'pg'
1
+ import * as pg from 'pg'
2
2
 
3
3
  import { PostgresTransaction, PostgresTransactionImpl } from './PostgresTransaction.js'
4
4
  import { Database } from '../../Database.js'
@@ -1,5 +1,6 @@
1
1
  import { Database } from './Database.js'
2
2
  import { DATABASES } from './DatabaseManager.js'
3
+ import { DynamoDatabase } from './integrations/dynamo/DynamoDatabase.js'
3
4
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js'
4
5
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js'
5
6
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js'
@@ -21,6 +22,7 @@ export type DatabaseClass<T> = {
21
22
  knex: new (...args: any[]) => KnexDatabase
22
23
  pg: new (...args: any[]) => PostgresDatabase
23
24
  kysely: new (...args: any[]) => KyselyDatabase<T>
25
+ dynamo: new (...args: any[]) => DynamoDatabase
24
26
  }
25
27
 
26
28
  /**
@@ -73,14 +75,22 @@ export type DbBaseConfig = {
73
75
  * @property {boolean} [convertCamelToSnake] - Whether to convert camel case to snake case for 'knex' database type.
74
76
  * @property {DbBaseConfig} [readReplica] - The read replica configuration for '
75
77
  */
76
- export type DbConfig<S extends DatabaseType> = DbBaseConfig & { type: S } & (S extends 'knex'
77
- ? {
78
- driver?: string
79
- convertCamelToSnake?: boolean
78
+ export type DbConfig<S extends DatabaseType> = { type: S } & (S extends 'knex'
79
+ ? DbBaseConfig & {
80
+ driver?: string
81
+ convertCamelToSnake?: boolean
82
+ }
83
+ : unknown) &
84
+ (S extends 'pg' | 'kysely'
85
+ ? DbBaseConfig & {
86
+ readReplica?: DbBaseConfig
80
87
  }
81
88
  : unknown) &
82
- (S extends 'pg' | 'kysely'
89
+ (S extends 'dynamo'
83
90
  ? {
84
- readReplica?: DbBaseConfig
91
+ region: string
92
+ tableName: string
93
+ maxAttempts?: number
94
+ connectionTimeout?: number
85
95
  }
86
96
  : unknown)
@@ -4,7 +4,7 @@ import { expect } from 'chai'
4
4
  import { DatabaseManager } from '../../src/Database/index.js'
5
5
  import type { DatabaseType, DbConfig } from '../../src/Database/types.js'
6
6
 
7
- type FakeDatabase = { host: string; type: 'knex' | 'pg' | 'kysely' }
7
+ type FakeDatabase = { host: string; tableName: string; type: 'knex' | 'pg' | 'kysely' | 'dynamo' }
8
8
 
9
9
  const fakeConfig = (host: string, type: DatabaseType) => {
10
10
  return {
@@ -13,6 +13,13 @@ const fakeConfig = (host: string, type: DatabaseType) => {
13
13
  } as DbConfig<typeof type>
14
14
  }
15
15
 
16
+ const fakeNoSQLConfig = (tableName: string, type: DatabaseType) => {
17
+ return {
18
+ type,
19
+ tableName,
20
+ } as DbConfig<typeof type>
21
+ }
22
+
16
23
  describe('Database Manager', () => {
17
24
  test('should correctly create and cache database instances', () => {
18
25
  const underTest = new DatabaseManager()
@@ -27,6 +34,9 @@ describe('Database Manager', () => {
27
34
  kysely: jest.fn((config: any) => {
28
35
  return { host: config.host, type: 'kysely' } as any
29
36
  }) as any,
37
+ dynamo: jest.fn((config: any) => {
38
+ return { tableName: config.tableName, type: 'dynamo' } as any
39
+ }) as any,
30
40
  }
31
41
 
32
42
  const create = config => underTest.create({ ...config }) as unknown as FakeDatabase
@@ -37,6 +47,8 @@ describe('Database Manager', () => {
37
47
  const pgConfig2 = fakeConfig('other', 'pg')
38
48
  const kyselyConfig1 = fakeConfig('localhost', 'pg')
39
49
  const kyselyConfig2 = fakeConfig('other', 'pg')
50
+ const dynamoConfig1 = fakeNoSQLConfig('localhost', 'dynamo')
51
+ const dynamoConfig2 = fakeNoSQLConfig('other', 'dynamo')
40
52
 
41
53
  const knex1 = create(knexConfig1)
42
54
  const knex2 = create(knexConfig1)
@@ -50,6 +62,10 @@ describe('Database Manager', () => {
50
62
  const kysely2 = create(kyselyConfig1)
51
63
  const kysely3 = create(kyselyConfig2)
52
64
 
65
+ const dynamo1 = create(dynamoConfig1)
66
+ const dynamo2 = create(dynamoConfig1)
67
+ const dynamo3 = create(dynamoConfig2)
68
+
53
69
  expect(knex1).to.equal(knex2).to.not.equal(knex3).to.not.equal(pg1)
54
70
 
55
71
  expect(knexConfig1).to.be.deep.equal(knex1).to.be.deep.equal(knex2)
@@ -67,5 +83,12 @@ describe('Database Manager', () => {
67
83
  expect(kyselyConfig1).to.be.deep.equal(kysely1).to.be.deep.equal(kysely2)
68
84
 
69
85
  expect(kysely3).to.be.deep.equal(kyselyConfig2)
86
+
87
+ expect(dynamo1).to.equal(dynamo2).to.not.equal(dynamo3).to.not.equal(pg1)
88
+ console.log(dynamoConfig1)
89
+ console.log(dynamo1)
90
+ expect(dynamoConfig1).to.be.deep.equal(dynamo1).to.be.deep.equal(dynamo2)
91
+
92
+ expect(dynamo3).to.be.deep.equal(dynamoConfig2)
70
93
  })
71
94
  })
@@ -11,7 +11,7 @@ const testResources = async (config: Partial<DbConfig<'knex'>>) => {
11
11
  autoCommit: true,
12
12
  ...config,
13
13
  } as DbConfig<'knex'>,
14
- } as KnexDatabase
14
+ } as any as KnexDatabase
15
15
 
16
16
  const txMock = jest.fn() as any
17
17
  txMock.commit = jest.fn()
@@ -20,7 +20,7 @@ const testResources = async (config: Partial<DbConfig<'kysely'>>) => {
20
20
  autoCommit: true,
21
21
  ...config,
22
22
  } as DbConfig<'kysely'>,
23
- } as KyselyDatabase<DB>
23
+ } as any as KyselyDatabase<DB>
24
24
 
25
25
  const transaction = jest.fn().mockImplementation(() => {
26
26
  return {
@@ -11,7 +11,7 @@ const testResources = async (config: Partial<DbConfig<'pg'>>) => {
11
11
  autoCommit: true,
12
12
  ...config,
13
13
  } as DbConfig<'pg'>,
14
- } as PostgresDatabase
14
+ } as any as PostgresDatabase
15
15
 
16
16
  const transaction = jest.fn().mockImplementation(() => {
17
17
  return {