@creator.co/wapi 1.7.5 → 1.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creator.co/wapi",
3
- "version": "1.7.5",
3
+ "version": "1.7.6",
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
- "@aws-sdk/client-secrets-manager": "3.556",
23
- "@aws-sdk/client-ses": "3.556",
24
- "@aws-sdk/client-sns": "3.556",
25
- "@aws-sdk/client-ssm": "3.556",
26
- "@aws-sdk/credential-provider-node": "3.556",
23
+ "@aws-sdk/client-secrets-manager": "^3.576.0",
24
+ "@aws-sdk/client-ses": "^3.576.0",
25
+ "@aws-sdk/client-sns": "^3.576.0",
26
+ "@aws-sdk/client-ssm": "^3.576.0",
27
+ "@aws-sdk/credential-provider-node": "^3.576.0",
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,7 @@
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';
4
5
  import { KnexDatabase } from './integrations/knex/KnexDatabase.js';
5
6
  import { KnexTransaction } from './integrations/knex/KnexTransaction.js';
6
7
  import { KyselyDatabase } from './integrations/kysely/KyselyDatabase.js';
@@ -8,4 +9,4 @@ import { KyselyTransaction } from './integrations/kysely/KyselyTransaction.js';
8
9
  import { PostgresDatabase } from './integrations/pgsql/PostgresDatabase.js';
9
10
  import { PostgresTransaction } from './integrations/pgsql/PostgresTransaction.js';
10
11
  import { DbConfig } from './types.js';
11
- export { DatabaseTransaction, Database, DatabaseManager, DbConfig, KnexTransaction, KnexDatabase, PostgresTransaction, PostgresDatabase, KyselyTransaction, KyselyDatabase, };
12
+ export { DatabaseTransaction, Database, DatabaseManager, DbConfig, KnexTransaction, KnexDatabase, PostgresTransaction, PostgresDatabase, KyselyTransaction, KyselyDatabase, 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,8 @@ 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,
16
+ DynamoDatabase, };
12
17
  //# 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,iFAAiF;AACjF,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,qBAAqB;AACrB,cAAc,GACf,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { Database } from '../../Database.js';
3
+ import type { DbConfig } from '../../types.js';
4
+ export declare class DynamoDatabase extends Database<any> {
5
+ private static dynamoProvider;
6
+ readonly client: DynamoDBClient;
7
+ constructor(config: DbConfig<'dynamo'>);
8
+ transaction(): Promise<any>;
9
+ private providerFactory;
10
+ }
@@ -0,0 +1,37 @@
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 { Database } from '../../Database.js';
14
+ export class DynamoDatabase extends Database {
15
+ constructor(config) {
16
+ super(config);
17
+ this.client = this.providerFactory(config);
18
+ }
19
+ transaction() {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ return Promise.resolve(null);
22
+ });
23
+ }
24
+ providerFactory(config) {
25
+ return new DynamoDatabase.dynamoProvider({
26
+ region: config.region,
27
+ maxAttempts: config.maxAttempts || 3,
28
+ requestHandler: new NodeHttpHandler({
29
+ connectionTimeout: config.connectionTimeout || 60000,
30
+ socketTimeout: config.connectionTimeout || 60000,
31
+ httpsAgent: new Agent({ keepAlive: false, maxSockets: 50, rejectUnauthorized: true }),
32
+ }),
33
+ });
34
+ }
35
+ }
36
+ DynamoDatabase.dynamoProvider = DynamoDBClient;
37
+ //# 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,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,MAAM,OAAO,cAAe,SAAQ,QAAa;IAI/C,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,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,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,IAAI,CAAC;YACpC,cAAc,EAAE,IAAI,eAAe,CAAC;gBAClC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;gBACpD,aAAa,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;gBAChD,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"}
@@ -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/index.ts CHANGED
@@ -2,7 +2,7 @@ import { HttpMethod } from './src/API/Request.js'
2
2
  import Response, { ResponseErrorType } from './src/API/Response.js'
3
3
  import EventProcessor from './src/BaseEvent/EventProcessor.js'
4
4
  import Process from './src/BaseEvent/Process.js'
5
- import Transaction from './src/BaseEvent/Transaction.js'
5
+ import Transaction, { TransactionConfig } from './src/BaseEvent/Transaction.js'
6
6
  import Redis from './src/Cache/Redis.js'
7
7
  import Configuration from './src/Config/Configuration.js'
8
8
  import Crypto from './src/Crypto/Crypto.js'
@@ -53,6 +53,7 @@ export {
53
53
  Utils,
54
54
  AsyncSingleton,
55
55
  Route,
56
+ TransactionConfig,
56
57
  // Misc types
57
58
  ResponseErrorType,
58
59
  HttpMethod,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creator.co/wapi",
3
- "version": "1.7.5",
3
+ "version": "1.7.6",
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
- "@aws-sdk/client-secrets-manager": "3.556",
23
- "@aws-sdk/client-ses": "3.556",
24
- "@aws-sdk/client-sns": "3.556",
25
- "@aws-sdk/client-ssm": "3.556",
26
- "@aws-sdk/credential-provider-node": "3.556",
23
+ "@aws-sdk/client-secrets-manager": "^3.576.0",
24
+ "@aws-sdk/client-ses": "^3.576.0",
25
+ "@aws-sdk/client-sns": "^3.576.0",
26
+ "@aws-sdk/client-ssm": "^3.576.0",
27
+ "@aws-sdk/credential-provider-node": "^3.576.0",
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,33 @@
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 { Database } from '../../Database.js'
7
+ import type { DbConfig } from '../../types.js'
8
+
9
+ export class DynamoDatabase extends Database<any> {
10
+ private static dynamoProvider = DynamoDBClient
11
+ public readonly client: DynamoDBClient
12
+
13
+ public constructor(config: DbConfig<'dynamo'>) {
14
+ super(config)
15
+ this.client = this.providerFactory(config)
16
+ }
17
+
18
+ public override async transaction(): Promise<any> {
19
+ return Promise.resolve(null)
20
+ }
21
+
22
+ private providerFactory(config: DbConfig<'dynamo'>) {
23
+ return new DynamoDatabase.dynamoProvider({
24
+ region: config.region,
25
+ maxAttempts: config.maxAttempts || 3,
26
+ requestHandler: new NodeHttpHandler({
27
+ connectionTimeout: config.connectionTimeout || 60000,
28
+ socketTimeout: config.connectionTimeout || 60000,
29
+ httpsAgent: new Agent({ keepAlive: false, maxSockets: 50, rejectUnauthorized: true }),
30
+ }),
31
+ })
32
+ }
33
+ }
@@ -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
  })
@@ -0,0 +1,44 @@
1
+ import { Agent } from 'https'
2
+
3
+ import { DynamoDB } from '@aws-sdk/client-dynamodb'
4
+ import { jest } from '@jest/globals'
5
+ import { NodeHttpHandler } from '@smithy/node-http-handler'
6
+
7
+ import type { DbConfig } from '../../../../src/Database/index.js'
8
+ import { DynamoDatabase } from '../../../../src/Database/integrations/dynamo/DynamoDatabase.js'
9
+
10
+ const config: DbConfig<'dynamo'> = {
11
+ type: 'dynamo',
12
+ region: 'ca-central-1',
13
+ tableName: 'myTable',
14
+ }
15
+
16
+ const expectedImplConfig = {
17
+ region: config.region,
18
+ maxAttempts: 3,
19
+ requestHandler: new NodeHttpHandler({
20
+ connectionTimeout: 60000,
21
+ socketTimeout: 60000,
22
+ httpsAgent: new Agent({ keepAlive: false, maxSockets: 50, rejectUnauthorized: true }),
23
+ }),
24
+ }
25
+
26
+ describe('DynamoDatabase', () => {
27
+ test('DynamoDatabase', async () => {
28
+ const mockTrans = { a: 'b' } as any
29
+ const mockClient = jest.fn(
30
+ () =>
31
+ ({
32
+ test: async () => mockTrans,
33
+ }) as any as DynamoDB
34
+ )
35
+ DynamoDatabase['dynamoProvider'] = mockClient
36
+
37
+ const underTest = new DynamoDatabase(config)
38
+ expect(mockClient).toBeCalledWith(expectedImplConfig)
39
+
40
+ // no transaction
41
+ const trans = await underTest.transaction()
42
+ expect(trans).toBe(null)
43
+ })
44
+ })
@@ -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 {