@goldstack/template-dynamodb 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/bin/template +11 -0
- package/dist/src/dynamoDBData.d.ts +6 -0
- package/dist/src/dynamoDBData.d.ts.map +1 -0
- package/dist/src/dynamoDBData.js +83 -0
- package/dist/src/dynamoDBData.js.map +1 -0
- package/dist/src/dynamoDBMigrations.d.ts +11 -0
- package/dist/src/dynamoDBMigrations.d.ts.map +1 -0
- package/dist/src/dynamoDBMigrations.js +34 -0
- package/dist/src/dynamoDBMigrations.js.map +1 -0
- package/dist/src/dynamoDBPackageUtils.d.ts +5 -0
- package/dist/src/dynamoDBPackageUtils.d.ts.map +1 -0
- package/dist/src/dynamoDBPackageUtils.js +25 -0
- package/dist/src/dynamoDBPackageUtils.js.map +1 -0
- package/dist/src/dynamoDBTableCli.d.ts +2 -0
- package/dist/src/dynamoDBTableCli.d.ts.map +1 -0
- package/dist/src/dynamoDBTableCli.js +41 -0
- package/dist/src/dynamoDBTableCli.js.map +1 -0
- package/dist/src/localDynamoDB.d.ts +10 -0
- package/dist/src/localDynamoDB.d.ts.map +1 -0
- package/dist/src/localDynamoDB.js +64 -0
- package/dist/src/localDynamoDB.js.map +1 -0
- package/dist/src/templateDynamoDB.d.ts +5 -0
- package/dist/src/templateDynamoDB.d.ts.map +1 -0
- package/dist/src/templateDynamoDB.js +86 -0
- package/dist/src/templateDynamoDB.js.map +1 -0
- package/dist/src/templateDynamoDBTable.d.ts +28 -0
- package/dist/src/templateDynamoDBTable.d.ts.map +1 -0
- package/dist/src/templateDynamoDBTable.js +103 -0
- package/dist/src/templateDynamoDBTable.js.map +1 -0
- package/dist/src/types/DynamoDBDeployment.d.ts +11 -0
- package/dist/src/types/DynamoDBDeployment.d.ts.map +1 -0
- package/dist/src/types/DynamoDBDeployment.js +3 -0
- package/dist/src/types/DynamoDBDeployment.js.map +1 -0
- package/dist/src/types/DynamoDBDeploymentConfiguration.d.ts +16 -0
- package/dist/src/types/DynamoDBDeploymentConfiguration.d.ts.map +1 -0
- package/dist/src/types/DynamoDBDeploymentConfiguration.js +3 -0
- package/dist/src/types/DynamoDBDeploymentConfiguration.js.map +1 -0
- package/dist/src/types/DynamoDBPackage.d.ts +22 -0
- package/dist/src/types/DynamoDBPackage.d.ts.map +1 -0
- package/dist/src/types/DynamoDBPackage.js +3 -0
- package/dist/src/types/DynamoDBPackage.js.map +1 -0
- package/dist/src/types/DynamoDBPackageConfiguration.d.ts +14 -0
- package/dist/src/types/DynamoDBPackageConfiguration.d.ts.map +1 -0
- package/dist/src/types/DynamoDBPackageConfiguration.js +3 -0
- package/dist/src/types/DynamoDBPackageConfiguration.js.map +1 -0
- package/dist/src/umzugDynamoDBStorage.d.ts +22 -0
- package/dist/src/umzugDynamoDBStorage.d.ts.map +1 -0
- package/dist/src/umzugDynamoDBStorage.js +76 -0
- package/dist/src/umzugDynamoDBStorage.js.map +1 -0
- package/package.json +81 -0
package/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Goldstack DynamoDB Template Tools
|
|
2
|
+
|
|
3
|
+
This library provides an API and CLI for building Node.js modules that wrap a DynamoDB Table. These tools allow deploying the infrastructure for the table as well as a way to connect with the table across multiple environments (such as dev, staging and production).
|
|
4
|
+
|
|
5
|
+
For more information, see [DynamoDB Template](https://docs.goldstack.party/docs/templates/dynamodb).
|
package/bin/template
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
4
|
+
require('source-map-support').install();
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
6
|
+
require('./../dist/src/templateS3')
|
|
7
|
+
.run(process.argv)
|
|
8
|
+
.catch((e) => {
|
|
9
|
+
console.log(e);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PackageConfig } from '@goldstack/utils-package-config';
|
|
2
|
+
import DynamoDB from 'aws-sdk/clients/dynamodb';
|
|
3
|
+
import { DynamoDBDeployment, DynamoDBPackage } from './templateDynamoDB';
|
|
4
|
+
export declare const assertTable: (packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName: string, client: DynamoDB) => Promise<void>;
|
|
5
|
+
export declare const deleteTable: (packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName: string, client: DynamoDB) => Promise<void>;
|
|
6
|
+
//# sourceMappingURL=dynamoDBData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBData.d.ts","sourceRoot":"","sources":["../../src/dynamoDBData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzE,eAAO,MAAM,WAAW,kBACP,cAAc,eAAe,EAAE,kBAAkB,CAAC,kBACjD,MAAM,UACd,QAAQ,KACf,QAAQ,IAAI,CAqDd,CAAC;AAEF,eAAO,MAAM,WAAW,kBACP,cAAc,eAAe,EAAE,kBAAkB,CAAC,kBACjD,MAAM,UACd,QAAQ,KACf,QAAQ,IAAI,CAqBd,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteTable = exports.assertTable = void 0;
|
|
4
|
+
const dynamoDBPackageUtils_1 = require("./dynamoDBPackageUtils");
|
|
5
|
+
const assertTable = async (packageConfig, deploymentName, client) => {
|
|
6
|
+
const tableName = await (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
|
|
7
|
+
const res = client
|
|
8
|
+
.createTable({
|
|
9
|
+
TableName: tableName,
|
|
10
|
+
AttributeDefinitions: [
|
|
11
|
+
{
|
|
12
|
+
AttributeName: 'pk',
|
|
13
|
+
AttributeType: 'S',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
AttributeName: 'sk',
|
|
17
|
+
AttributeType: 'S',
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
KeySchema: [
|
|
21
|
+
{
|
|
22
|
+
AttributeName: 'pk',
|
|
23
|
+
KeyType: 'HASH',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
AttributeName: 'sk',
|
|
27
|
+
KeyType: 'RANGE',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
BillingMode: 'PAY_PER_REQUEST',
|
|
31
|
+
})
|
|
32
|
+
.promise();
|
|
33
|
+
await new Promise((resolve, reject) => {
|
|
34
|
+
res
|
|
35
|
+
.then(async () => {
|
|
36
|
+
var _a;
|
|
37
|
+
let retries = 0;
|
|
38
|
+
let tableStatus = undefined;
|
|
39
|
+
// ensure that able is ACTIVE before proceeding
|
|
40
|
+
while (tableStatus !== 'ACTIVE' && retries < 20) {
|
|
41
|
+
const tableInfo = await client
|
|
42
|
+
.describeTable({ TableName: tableName })
|
|
43
|
+
.promise();
|
|
44
|
+
tableStatus = (_a = tableInfo.Table) === null || _a === void 0 ? void 0 : _a.TableStatus;
|
|
45
|
+
retries++;
|
|
46
|
+
}
|
|
47
|
+
resolve();
|
|
48
|
+
})
|
|
49
|
+
.catch((e) => {
|
|
50
|
+
if (e.code === 'ResourceInUseException') {
|
|
51
|
+
// all good if table exists already
|
|
52
|
+
resolve();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
reject(e);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
exports.assertTable = assertTable;
|
|
60
|
+
const deleteTable = async (packageConfig, deploymentName, client) => {
|
|
61
|
+
const tableName = await (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
|
|
62
|
+
const res = client
|
|
63
|
+
.deleteTable({
|
|
64
|
+
TableName: tableName,
|
|
65
|
+
})
|
|
66
|
+
.promise();
|
|
67
|
+
await new Promise((resolve, reject) => {
|
|
68
|
+
res
|
|
69
|
+
.then(async () => {
|
|
70
|
+
resolve();
|
|
71
|
+
})
|
|
72
|
+
.catch((e) => {
|
|
73
|
+
if (e.code === 'ResourceNotFoundException') {
|
|
74
|
+
// all good if table already deleted
|
|
75
|
+
resolve();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
reject(e);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
exports.deleteTable = deleteTable;
|
|
83
|
+
//# sourceMappingURL=dynamoDBData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBData.js","sourceRoot":"","sources":["../../src/dynamoDBData.ts"],"names":[],"mappings":";;;AAGA,iEAAsD;AAG/C,MAAM,WAAW,GAAG,KAAK,EAC9B,aAAiE,EACjE,cAAsB,EACtB,MAAgB,EACD,EAAE;IACjB,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM;SACf,WAAW,CAAC;QACX,SAAS,EAAE,SAAS;QACpB,oBAAoB,EAAE;YACpB;gBACE,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,GAAG;aACnB;YACD;gBACE,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,GAAG;aACnB;SACF;QACD,SAAS,EAAE;YACT;gBACE,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,MAAM;aAChB;YACD;gBACE,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,OAAO;aACjB;SACF;QACD,WAAW,EAAE,iBAAiB;KAC/B,CAAC;SACD,OAAO,EAAE,CAAC;IAEb,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,GAAG;aACA,IAAI,CAAC,KAAK,IAAI,EAAE;;YACf,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,WAAW,GAAuB,SAAS,CAAC;YAChD,+CAA+C;YAC/C,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,GAAG,EAAE,EAAE;gBAC/C,MAAM,SAAS,GAAG,MAAM,MAAM;qBAC3B,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;qBACvC,OAAO,EAAE,CAAC;gBACb,WAAW,GAAG,MAAA,SAAS,CAAC,KAAK,0CAAE,WAAW,CAAC;gBAC3C,OAAO,EAAE,CAAC;aACX;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAwB,EAAE;gBACvC,mCAAmC;gBACnC,OAAO,EAAE,CAAC;gBACV,OAAO;aACR;YACD,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzDW,QAAA,WAAW,eAyDtB;AAEK,MAAM,WAAW,GAAG,KAAK,EAC9B,aAAiE,EACjE,cAAsB,EACtB,MAAgB,EACD,EAAE;IACjB,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM;SACf,WAAW,CAAC;QACX,SAAS,EAAE,SAAS;KACrB,CAAC;SACD,OAAO,EAAE,CAAC;IACb,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,GAAG;aACA,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,IAAI,KAAK,2BAA2B,EAAE;gBAC1C,oCAAoC;gBACpC,OAAO,EAAE,CAAC;gBACV,OAAO;aACR;YACD,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzBW,QAAA,WAAW,eAyBtB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PackageConfig } from '@goldstack/utils-package-config';
|
|
2
|
+
import DynamoDB from 'aws-sdk/clients/dynamodb';
|
|
3
|
+
import DynamoDBPackage, { DynamoDBDeployment } from './types/DynamoDBPackage';
|
|
4
|
+
import { InputMigrations } from 'umzug/lib/types';
|
|
5
|
+
export interface DynamoDBContext {
|
|
6
|
+
client: DynamoDB;
|
|
7
|
+
tableName: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const performMigrations: (packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName: string, migrations: InputMigrations<DynamoDBContext>, client: DynamoDB) => Promise<void>;
|
|
10
|
+
export declare const migrateDownTo: (migrationName: string, packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName: string, migrations: InputMigrations<DynamoDBContext>, client: DynamoDB) => Promise<void>;
|
|
11
|
+
//# sourceMappingURL=dynamoDBMigrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBMigrations.d.ts","sourceRoot":"","sources":["../../src/dynamoDBMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,kBACb,cAAc,eAAe,EAAE,kBAAkB,CAAC,kBACjD,MAAM,cACV,gBAAgB,eAAe,CAAC,UACpC,QAAQ,KACf,QAAQ,IAAI,CASd,CAAC;AAEF,eAAO,MAAM,aAAa,kBACT,MAAM,iBACN,cAAc,eAAe,EAAE,kBAAkB,CAAC,kBACjD,MAAM,cACV,gBAAgB,eAAe,CAAC,UACpC,QAAQ,KACf,QAAQ,IAAI,CASd,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.migrateDownTo = exports.performMigrations = void 0;
|
|
4
|
+
const dynamoDBPackageUtils_1 = require("./dynamoDBPackageUtils");
|
|
5
|
+
const umzugDynamoDBStorage_1 = require("./umzugDynamoDBStorage");
|
|
6
|
+
const umzug_1 = require("umzug");
|
|
7
|
+
const performMigrations = async (packageConfig, deploymentName, migrations, client) => {
|
|
8
|
+
const umzug = await initUmzug(packageConfig, deploymentName, client, migrations);
|
|
9
|
+
await umzug.up();
|
|
10
|
+
};
|
|
11
|
+
exports.performMigrations = performMigrations;
|
|
12
|
+
const migrateDownTo = async (migrationName, packageConfig, deploymentName, migrations, client) => {
|
|
13
|
+
const umzug = await initUmzug(packageConfig, deploymentName, client, migrations);
|
|
14
|
+
await umzug.down({ to: migrationName });
|
|
15
|
+
};
|
|
16
|
+
exports.migrateDownTo = migrateDownTo;
|
|
17
|
+
async function initUmzug(packageConfig, deploymentName, client, migrations) {
|
|
18
|
+
const tableName = await (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
|
|
19
|
+
const storage = new umzugDynamoDBStorage_1.DynamoDBStorage({
|
|
20
|
+
dynamoDB: client,
|
|
21
|
+
tableName,
|
|
22
|
+
});
|
|
23
|
+
const umzug = new umzug_1.Umzug({
|
|
24
|
+
migrations: migrations,
|
|
25
|
+
context: {
|
|
26
|
+
client,
|
|
27
|
+
tableName,
|
|
28
|
+
},
|
|
29
|
+
logger: console,
|
|
30
|
+
storage: storage,
|
|
31
|
+
});
|
|
32
|
+
return umzug;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=dynamoDBMigrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBMigrations.js","sourceRoot":"","sources":["../../src/dynamoDBMigrations.ts"],"names":[],"mappings":";;;AAEA,iEAAsD;AAEtD,iEAAyD;AAGzD,iCAA8B;AAOvB,MAAM,iBAAiB,GAAG,KAAK,EACpC,aAAiE,EACjE,cAAsB,EACtB,UAA4C,EAC5C,MAAgB,EACD,EAAE;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,CAC3B,aAAa,EACb,cAAc,EACd,MAAM,EACN,UAAU,CACX,CAAC;IAEF,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC;AACnB,CAAC,CAAC;AAdW,QAAA,iBAAiB,qBAc5B;AAEK,MAAM,aAAa,GAAG,KAAK,EAChC,aAAqB,EACrB,aAAiE,EACjE,cAAsB,EACtB,UAA4C,EAC5C,MAAgB,EACD,EAAE;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,CAC3B,aAAa,EACb,cAAc,EACd,MAAM,EACN,UAAU,CACX,CAAC;IAEF,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC;AAfW,QAAA,aAAa,iBAexB;AAEF,KAAK,UAAU,SAAS,CACtB,aAAiE,EACjE,cAAsB,EACtB,MAAgB,EAChB,UAA4C;IAE5C,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,sCAAe,CAAC;QAClC,QAAQ,EAAE,MAAM;QAChB,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,aAAK,CAAkB;QACvC,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,MAAM;YACN,SAAS;SACV;QACD,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PackageConfig } from '@goldstack/utils-package-config';
|
|
2
|
+
import DynamoDBPackage, { DynamoDBDeployment } from './types/DynamoDBPackage';
|
|
3
|
+
export declare const getTableName: (packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName?: string | undefined) => Promise<string>;
|
|
4
|
+
export declare const getDeploymentName: (deploymentName?: string | undefined) => string;
|
|
5
|
+
//# sourceMappingURL=dynamoDBPackageUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBPackageUtils.d.ts","sourceRoot":"","sources":["../../src/dynamoDBPackageUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,eAAO,MAAM,YAAY,kBACR,cAAc,eAAe,EAAE,kBAAkB,CAAC,0CAEhE,QAAQ,MAAM,CAOhB,CAAC;AAEF,eAAO,MAAM,iBAAiB,2CAA8B,MAS3D,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getDeploymentName = exports.getTableName = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const getTableName = async (packageConfig, deploymentName) => {
|
|
9
|
+
deploymentName = (0, exports.getDeploymentName)(deploymentName);
|
|
10
|
+
if (deploymentName === 'local') {
|
|
11
|
+
return `local-${packageConfig.getConfig().name}`;
|
|
12
|
+
}
|
|
13
|
+
const deployment = packageConfig.getDeployment(deploymentName);
|
|
14
|
+
return deployment.configuration.tableName;
|
|
15
|
+
};
|
|
16
|
+
exports.getTableName = getTableName;
|
|
17
|
+
const getDeploymentName = (deploymentName) => {
|
|
18
|
+
if (!deploymentName) {
|
|
19
|
+
(0, assert_1.default)(process.env.GOLDSTACK_DEPLOYMENT, 'Cannot connect to DynamoDB table. Either specify a deploymentName or ensure environment variable GOLDSTACK_DEPLOYMENT is defined.');
|
|
20
|
+
return process.env.GOLDSTACK_DEPLOYMENT;
|
|
21
|
+
}
|
|
22
|
+
return deploymentName;
|
|
23
|
+
};
|
|
24
|
+
exports.getDeploymentName = getDeploymentName;
|
|
25
|
+
//# sourceMappingURL=dynamoDBPackageUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBPackageUtils.js","sourceRoot":"","sources":["../../src/dynamoDBPackageUtils.ts"],"names":[],"mappings":";;;;;;AAEA,oDAA4B;AAGrB,MAAM,YAAY,GAAG,KAAK,EAC/B,aAAiE,EACjE,cAAuB,EACN,EAAE;IACnB,cAAc,GAAG,IAAA,yBAAiB,EAAC,cAAc,CAAC,CAAC;IACnD,IAAI,cAAc,KAAK,OAAO,EAAE;QAC9B,OAAO,SAAS,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;KAClD;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC;AAVW,QAAA,YAAY,gBAUvB;AAEK,MAAM,iBAAiB,GAAG,CAAC,cAAuB,EAAU,EAAE;IACnE,IAAI,CAAC,cAAc,EAAE;QACnB,IAAA,gBAAM,EACJ,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAChC,mIAAmI,CACpI,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;KACzC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBTableCli.d.ts","sourceRoot":"","sources":["../../src/dynamoDBTableCli.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,SAAgB,MAAM,EAAE,KAAG,QAAQ,IAAI,CAmC9D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dynamoDBCli = void 0;
|
|
4
|
+
const utils_sh_1 = require("@goldstack/utils-sh");
|
|
5
|
+
const templateDynamoDBTable_1 = require("./templateDynamoDBTable");
|
|
6
|
+
const dynamoDBCli = async (args) => {
|
|
7
|
+
const goldstackConfig = JSON.parse((0, utils_sh_1.read)(`${process.cwd()}/goldstack.json`));
|
|
8
|
+
const packageSchema = JSON.parse((0, utils_sh_1.read)(`${process.cwd()}/schemas/package.schema.json`));
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
10
|
+
const migrations = require(`${process.cwd()}/src/migrations`).createMigrations();
|
|
11
|
+
if (args[0] === 'init') {
|
|
12
|
+
await (0, templateDynamoDBTable_1.connect)({
|
|
13
|
+
goldstackConfig,
|
|
14
|
+
packageSchema,
|
|
15
|
+
migrations,
|
|
16
|
+
deploymentName: args[1],
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (args[0] === 'delete') {
|
|
21
|
+
await (0, templateDynamoDBTable_1.deleteTable)({
|
|
22
|
+
goldstackConfig,
|
|
23
|
+
packageSchema,
|
|
24
|
+
deploymentName: args[1],
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (args[0] === 'migrate-to') {
|
|
29
|
+
await (0, templateDynamoDBTable_1.migrateDownTo)({
|
|
30
|
+
goldstackConfig,
|
|
31
|
+
packageSchema,
|
|
32
|
+
migrations,
|
|
33
|
+
migrationName: args[2],
|
|
34
|
+
deploymentName: args[1],
|
|
35
|
+
});
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Unknown DynamoDB table command: ${args[0]}`);
|
|
39
|
+
};
|
|
40
|
+
exports.dynamoDBCli = dynamoDBCli;
|
|
41
|
+
//# sourceMappingURL=dynamoDBTableCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDBTableCli.js","sourceRoot":"","sources":["../../src/dynamoDBTableCli.ts"],"names":[],"mappings":";;;AAAA,kDAA2C;AAC3C,mEAA8E;AAEvE,MAAM,WAAW,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IACjE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,eAAI,EAAC,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,IAAA,eAAI,EAAC,GAAG,OAAO,CAAC,GAAG,EAAE,8BAA8B,CAAC,CACrD,CAAC;IACF,8DAA8D;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;QACtB,MAAM,IAAA,+BAAO,EAAC;YACZ,eAAe;YACf,aAAa;YACb,UAAU;YACV,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;QACH,OAAO;KACR;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QACxB,MAAM,IAAA,mCAAW,EAAC;YAChB,eAAe;YACf,aAAa;YACb,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;QACH,OAAO;KACR;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;QAC5B,MAAM,IAAA,qCAAa,EAAC;YAClB,eAAe;YACf,aAAa;YACb,UAAU;YACV,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;YACtB,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;QACH,OAAO;KACR;IACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC;AAnCW,QAAA,WAAW,eAmCtB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PackageConfig } from '@goldstack/utils-package-config';
|
|
2
|
+
import { DynamoDB } from 'aws-sdk';
|
|
3
|
+
import { StartedTestContainer } from 'testcontainers';
|
|
4
|
+
import { DynamoDBDeployment, DynamoDBPackage } from './templateDynamoDB';
|
|
5
|
+
export declare const localConnect: (packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName?: string | undefined) => Promise<DynamoDB>;
|
|
6
|
+
export declare const endpointUrl: (startedContainer: StartedTestContainer) => string;
|
|
7
|
+
export declare const createClient: (startedContainer: StartedTestContainer) => DynamoDB;
|
|
8
|
+
export declare const startContainer: () => Promise<StartedTestContainer>;
|
|
9
|
+
export declare const stopLocalDynamoDB: (packageConfig: PackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName?: string | undefined) => Promise<void>;
|
|
10
|
+
//# sourceMappingURL=localDynamoDB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localDynamoDB.d.ts","sourceRoot":"","sources":["../../src/localDynamoDB.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAoB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAYzE,eAAO,MAAM,YAAY,kBACR,cAAc,eAAe,EAAE,kBAAkB,CAAC,0CAEhE,QAAQ,QAAQ,CAmBlB,CAAC;AAEF,eAAO,MAAM,WAAW,qBAAsB,oBAAoB,KAAG,MAIpE,CAAC;AAEF,eAAO,MAAM,YAAY,qBACL,oBAAoB,KACrC,QAUF,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,QAAQ,oBAAoB,CAK7D,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBACb,cAAc,eAAe,EAAE,kBAAkB,CAAC,0CAEhE,QAAQ,IAAI,CAad,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stopLocalDynamoDB = exports.startContainer = exports.createClient = exports.endpointUrl = exports.localConnect = void 0;
|
|
4
|
+
const aws_sdk_1 = require("aws-sdk");
|
|
5
|
+
const testcontainers_1 = require("testcontainers");
|
|
6
|
+
const dynamoDBPackageUtils_1 = require("./dynamoDBPackageUtils");
|
|
7
|
+
const MAPPED_PORT = 8000;
|
|
8
|
+
const IMAGE_NAME = 'amazon/dynamodb-local:1.18.0';
|
|
9
|
+
const startedContainers = new Map();
|
|
10
|
+
const localConnect = async (packageConfig, deploymentName) => {
|
|
11
|
+
const tableName = await (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
|
|
12
|
+
// TODO the key in this map may need to be extended to include the region as well, since dynamodb table names are unique per region.
|
|
13
|
+
let startedContainer = startedContainers.get(tableName);
|
|
14
|
+
if (startedContainer && startedContainer !== 'stopped') {
|
|
15
|
+
return (0, exports.createClient)(startedContainer);
|
|
16
|
+
}
|
|
17
|
+
startedContainer = await (0, exports.startContainer)();
|
|
18
|
+
// Check if another container for this table has already been started in the meanwhile
|
|
19
|
+
const startedContainerTest = startedContainers.get(tableName);
|
|
20
|
+
if (startedContainerTest && startedContainerTest !== 'stopped') {
|
|
21
|
+
await startedContainer.stop();
|
|
22
|
+
return (0, exports.createClient)(startedContainerTest);
|
|
23
|
+
}
|
|
24
|
+
startedContainers.set(tableName, startedContainer);
|
|
25
|
+
return (0, exports.createClient)(startedContainer);
|
|
26
|
+
};
|
|
27
|
+
exports.localConnect = localConnect;
|
|
28
|
+
const endpointUrl = (startedContainer) => {
|
|
29
|
+
return `http://${startedContainer.getHost()}:${startedContainer.getMappedPort(MAPPED_PORT)}`;
|
|
30
|
+
};
|
|
31
|
+
exports.endpointUrl = endpointUrl;
|
|
32
|
+
const createClient = (startedContainer) => {
|
|
33
|
+
const endpoint = (0, exports.endpointUrl)(startedContainer);
|
|
34
|
+
return new aws_sdk_1.DynamoDB({
|
|
35
|
+
endpoint,
|
|
36
|
+
region: 'eu-central-1',
|
|
37
|
+
credentials: {
|
|
38
|
+
accessKeyId: 'dummy',
|
|
39
|
+
secretAccessKey: 'dummy',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.createClient = createClient;
|
|
44
|
+
const startContainer = () => {
|
|
45
|
+
const startedContainer = new testcontainers_1.GenericContainer(IMAGE_NAME)
|
|
46
|
+
.withExposedPorts(MAPPED_PORT)
|
|
47
|
+
.start();
|
|
48
|
+
return startedContainer;
|
|
49
|
+
};
|
|
50
|
+
exports.startContainer = startContainer;
|
|
51
|
+
const stopLocalDynamoDB = async (packageConfig, deploymentName) => {
|
|
52
|
+
const tableName = await (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
|
|
53
|
+
const startedContainer = startedContainers.get(tableName);
|
|
54
|
+
if (!startedContainer) {
|
|
55
|
+
throw new Error(`Attempting to stop container that has not been started for DynamoDB table ${tableName}`);
|
|
56
|
+
}
|
|
57
|
+
if (startedContainer === 'stopped') {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
startedContainers.set(tableName, 'stopped');
|
|
61
|
+
await startedContainer.stop();
|
|
62
|
+
};
|
|
63
|
+
exports.stopLocalDynamoDB = stopLocalDynamoDB;
|
|
64
|
+
//# sourceMappingURL=localDynamoDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localDynamoDB.js","sourceRoot":"","sources":["../../src/localDynamoDB.ts"],"names":[],"mappings":";;;AAEA,qCAAmC;AACnC,mDAAwE;AAExE,iEAAsD;AAGtD,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAIlD,MAAM,iBAAiB,GAGnB,IAAI,GAAG,EAAE,CAAC;AAEP,MAAM,YAAY,GAAG,KAAK,EAC/B,aAAiE,EACjE,cAAuB,EACJ,EAAE;IACrB,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAEpE,oIAAoI;IACpI,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,SAAS,EAAE;QACtD,OAAO,IAAA,oBAAY,EAAC,gBAAgB,CAAC,CAAC;KACvC;IACD,gBAAgB,GAAG,MAAM,IAAA,sBAAc,GAAE,CAAC;IAE1C,sFAAsF;IACtF,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,SAAS,EAAE;QAC9D,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAA,oBAAY,EAAC,oBAAoB,CAAC,CAAC;KAC3C;IAED,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACnD,OAAO,IAAA,oBAAY,EAAC,gBAAgB,CAAC,CAAC;AACxC,CAAC,CAAC;AAtBW,QAAA,YAAY,gBAsBvB;AAEK,MAAM,WAAW,GAAG,CAAC,gBAAsC,EAAU,EAAE;IAC5E,OAAO,UAAU,gBAAgB,CAAC,OAAO,EAAE,IAAI,gBAAgB,CAAC,aAAa,CAC3E,WAAW,CACZ,EAAE,CAAC;AACN,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEK,MAAM,YAAY,GAAG,CAC1B,gBAAsC,EAC5B,EAAE;IACZ,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,gBAAgB,CAAC,CAAC;IAC/C,OAAO,IAAI,kBAAQ,CAAC;QAClB,QAAQ;QACR,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE;YACX,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,OAAO;SACzB;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB;AAEK,MAAM,cAAc,GAAG,GAAkC,EAAE;IAChE,MAAM,gBAAgB,GAAG,IAAI,iCAAgB,CAAC,UAAU,CAAC;SACtD,gBAAgB,CAAC,WAAW,CAAC;SAC7B,KAAK,EAAE,CAAC;IACX,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AALW,QAAA,cAAc,kBAKzB;AAEK,MAAM,iBAAiB,GAAG,KAAK,EACpC,aAAiE,EACjE,cAAuB,EACR,EAAE;IACjB,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,6EAA6E,SAAS,EAAE,CACzF,CAAC;KACH;IACD,IAAI,gBAAgB,KAAK,SAAS,EAAE;QAClC,OAAO;KACR;IACD,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateDynamoDB.d.ts","sourceRoot":"","sources":["../../src/templateDynamoDB.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAO5D,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,KAAG,QAAQ,IAAI,CA4EtD,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.run = void 0;
|
|
21
|
+
const utils_package_1 = require("@goldstack/utils-package");
|
|
22
|
+
const utils_cli_1 = require("@goldstack/utils-cli");
|
|
23
|
+
const utils_terraform_1 = require("@goldstack/utils-terraform");
|
|
24
|
+
const utils_terraform_aws_1 = require("@goldstack/utils-terraform-aws");
|
|
25
|
+
__exportStar(require("./types/DynamoDBPackage"), exports);
|
|
26
|
+
__exportStar(require("./templateDynamoDBTable"), exports);
|
|
27
|
+
const utils_package_config_1 = require("@goldstack/utils-package-config");
|
|
28
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
29
|
+
const assert_1 = __importDefault(require("assert"));
|
|
30
|
+
const dynamoDBTableCli_1 = require("./dynamoDBTableCli");
|
|
31
|
+
const run = async (args) => {
|
|
32
|
+
await (0, utils_cli_1.wrapCli)(async () => {
|
|
33
|
+
const deploymentPositional = (yargs) => {
|
|
34
|
+
return yargs.positional('deployment', {
|
|
35
|
+
type: 'string',
|
|
36
|
+
describe: 'Name of the deployment of the table',
|
|
37
|
+
demandOption: true,
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const argv = (0, utils_package_1.buildCli)({
|
|
41
|
+
yargs: yargs_1.default,
|
|
42
|
+
deployCommands: (0, utils_package_1.buildDeployCommands)(),
|
|
43
|
+
infraCommands: (0, utils_terraform_1.infraCommands)(),
|
|
44
|
+
})
|
|
45
|
+
.usage('$0 <table>')
|
|
46
|
+
.command('table <init|delete|migrate-to> <deployment>', 'Utility commands for DynamoDB table', (yargs) => {
|
|
47
|
+
yargs
|
|
48
|
+
.command('init', 'Initialise DynamoDB table and run all applicable migrations', deploymentPositional)
|
|
49
|
+
.command('delete', 'Deletes DynamoDB table and all its data', deploymentPositional)
|
|
50
|
+
.command('migrate-to', 'Migrate DynamoDB table', (yargs) => deploymentPositional(yargs).positional('migration-name', {
|
|
51
|
+
type: 'string',
|
|
52
|
+
describe: 'The name of the migration that the table should be migrated to.',
|
|
53
|
+
demandOption: true,
|
|
54
|
+
}));
|
|
55
|
+
})
|
|
56
|
+
.help().argv;
|
|
57
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
58
|
+
packagePath: './',
|
|
59
|
+
});
|
|
60
|
+
const config = packageConfig.getConfig();
|
|
61
|
+
(0, assert_1.default)(config, 'DynamoDB package config could not be loaded.');
|
|
62
|
+
const command = argv._[0];
|
|
63
|
+
const [, , , ...opArgs] = args;
|
|
64
|
+
if (command === 'infra') {
|
|
65
|
+
if (opArgs[0] === 'up') {
|
|
66
|
+
await (0, dynamoDBTableCli_1.dynamoDBCli)(['init', opArgs[1]]);
|
|
67
|
+
}
|
|
68
|
+
await (0, utils_terraform_aws_1.terraformAwsCli)(opArgs);
|
|
69
|
+
if (opArgs[0] === 'destroy') {
|
|
70
|
+
await (0, dynamoDBTableCli_1.dynamoDBCli)(['delete', opArgs[1]]);
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (command === 'deploy') {
|
|
75
|
+
await (0, dynamoDBTableCli_1.dynamoDBCli)(['init', opArgs[0]]);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (command === 'table') {
|
|
79
|
+
await (0, dynamoDBTableCli_1.dynamoDBCli)(opArgs);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
throw new Error('Unknown command: ' + command);
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
exports.run = run;
|
|
86
|
+
//# sourceMappingURL=templateDynamoDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateDynamoDB.js","sourceRoot":"","sources":["../../src/templateDynamoDB.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,4DAAyE;AACzE,oDAA+C;AAC/C,gEAA2D;AAC3D,wEAAiE;AACjE,0DAAwC;AACxC,0DAAwC;AAExC,0EAAgE;AAEhE,kDAAoC;AACpC,oDAA4B;AAC5B,yDAAiD;AAE1C,MAAM,GAAG,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IACzD,MAAM,IAAA,mBAAO,EAAC,KAAK,IAAI,EAAE;QACvB,MAAM,oBAAoB,GAAG,CAAC,KAAgB,EAAa,EAAE;YAC3D,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE;gBACpC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,qCAAqC;gBAC/C,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,wBAAQ,EAAC;YACpB,KAAK,EAAL,eAAK;YACL,cAAc,EAAE,IAAA,mCAAmB,GAAE;YACrC,aAAa,EAAE,IAAA,+BAAa,GAAE;SAC/B,CAAC;aACC,KAAK,CAAC,YAAY,CAAC;aACnB,OAAO,CACN,6CAA6C,EAC7C,qCAAqC,EACrC,CAAC,KAAK,EAAE,EAAE;YACR,KAAK;iBACF,OAAO,CACN,MAAM,EACN,6DAA6D,EAC7D,oBAAoB,CACrB;iBACA,OAAO,CACN,QAAQ,EACR,yCAAyC,EACzC,oBAAoB,CACrB;iBACA,OAAO,CAAC,YAAY,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,EAAE,CACzD,oBAAoB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,gBAAgB,EAAE;gBACvD,IAAI,EAAE,QAAQ;gBACd,QAAQ,EACN,iEAAiE;gBACnE,YAAY,EAAE,IAAI;aACnB,CAAC,CACH,CAAC;QACN,CAAC,CACF;aACA,IAAI,EAAE,CAAC,IAAI,CAAC;QAEf,MAAM,aAAa,GAAG,IAAI,oCAAa,CAGrC;YACA,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;QACzC,IAAA,gBAAM,EAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;QAE/B,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,IAAA,8BAAW,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC;YACD,MAAM,IAAA,qCAAe,EAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBAC3B,MAAM,IAAA,8BAAW,EAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;YACD,OAAO;SACR;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE;YACxB,MAAM,IAAA,8BAAW,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO;SACR;QAED,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,MAAM,IAAA,8BAAW,EAAC,MAAM,CAAC,CAAC;YAC1B,OAAO;SACR;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA5EW,QAAA,GAAG,OA4Ed"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import DynamoDB from 'aws-sdk/clients/dynamodb';
|
|
2
|
+
import { DynamoDBPackage } from './types/DynamoDBPackage';
|
|
3
|
+
import { InputMigrations } from 'umzug/lib/types';
|
|
4
|
+
import { DynamoDBContext } from './dynamoDBMigrations';
|
|
5
|
+
export declare const getTableName: (goldstackConfig: DynamoDBPackage | any, packageSchema: any, deploymentName?: string | undefined) => Promise<string>;
|
|
6
|
+
export declare const stopLocalDynamoDB: (goldstackConfig: DynamoDBPackage | any, packageSchema: any, deploymentName?: string | undefined) => Promise<void>;
|
|
7
|
+
export declare const connect: ({ goldstackConfig, packageSchema, migrations, deploymentName, }: {
|
|
8
|
+
goldstackConfig: DynamoDBPackage | any;
|
|
9
|
+
packageSchema: any;
|
|
10
|
+
migrations: InputMigrations<DynamoDBContext>;
|
|
11
|
+
deploymentName?: string | undefined;
|
|
12
|
+
}) => Promise<DynamoDB>;
|
|
13
|
+
/**
|
|
14
|
+
* Deletes the DynamoDB table with all its data.
|
|
15
|
+
*/
|
|
16
|
+
export declare const deleteTable: ({ goldstackConfig, packageSchema, deploymentName, }: {
|
|
17
|
+
goldstackConfig: DynamoDBPackage | any;
|
|
18
|
+
packageSchema: any;
|
|
19
|
+
deploymentName?: string | undefined;
|
|
20
|
+
}) => Promise<DynamoDB>;
|
|
21
|
+
export declare const migrateDownTo: ({ migrationName, goldstackConfig, packageSchema, migrations, deploymentName, }: {
|
|
22
|
+
migrationName: string;
|
|
23
|
+
goldstackConfig: DynamoDBPackage | any;
|
|
24
|
+
packageSchema: any;
|
|
25
|
+
migrations: InputMigrations<DynamoDBContext>;
|
|
26
|
+
deploymentName?: string | undefined;
|
|
27
|
+
}) => Promise<DynamoDB>;
|
|
28
|
+
//# sourceMappingURL=templateDynamoDBTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateDynamoDBTable.d.ts","sourceRoot":"","sources":["../../src/templateDynamoDBTable.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAY9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAO9B,eAAO,MAAM,YAAY,oBACN,eAAe,GAAG,GAAG,iBACvB,GAAG,0CAEjB,QAAQ,MAAM,CAQhB,CAAC;AAEF,eAAO,MAAM,iBAAiB,oBACX,eAAe,GAAG,GAAG,iBACvB,GAAG,0CAEjB,QAAQ,IAAI,CAWd,CAAC;AAsBF,eAAO,MAAM,OAAO;qBAMD,eAAe,GAAG,GAAG;mBACvB,GAAG;gBACN,gBAAgB,eAAe,CAAC;;MAE1C,QAAQ,QAAQ,CAkBnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;qBAKL,eAAe,GAAG,GAAG;mBACvB,GAAG;;MAEhB,QAAQ,QAAQ,CAWnB,CAAC;AAEF,eAAO,MAAM,aAAa;mBAOT,MAAM;qBACJ,eAAe,GAAG,GAAG;mBACvB,GAAG;gBACN,gBAAgB,eAAe,CAAC;;MAE1C,QAAQ,QAAQ,CAmBnB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.migrateDownTo = exports.deleteTable = exports.connect = exports.stopLocalDynamoDB = exports.getTableName = void 0;
|
|
7
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
8
|
+
const infra_aws_1 = require("@goldstack/infra-aws");
|
|
9
|
+
const dynamodb_1 = __importDefault(require("aws-sdk/clients/dynamodb"));
|
|
10
|
+
const dynamoDBPackageUtils_1 = require("./dynamoDBPackageUtils");
|
|
11
|
+
const utils_package_config_1 = require("@goldstack/utils-package-config");
|
|
12
|
+
const localDynamoDB_1 = require("./localDynamoDB");
|
|
13
|
+
const dynamoDBData_1 = require("./dynamoDBData");
|
|
14
|
+
const dynamoDBMigrations_1 = require("./dynamoDBMigrations");
|
|
15
|
+
/**
|
|
16
|
+
* Map to keep track for which deployment and tables initialisation and migrations have already been performed
|
|
17
|
+
*/
|
|
18
|
+
const coldStart = new Map();
|
|
19
|
+
const getTableName = async (goldstackConfig, packageSchema, deploymentName) => {
|
|
20
|
+
deploymentName = (0, dynamoDBPackageUtils_1.getDeploymentName)(deploymentName);
|
|
21
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
22
|
+
goldstackJson: goldstackConfig,
|
|
23
|
+
packageSchema,
|
|
24
|
+
});
|
|
25
|
+
return (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
|
|
26
|
+
};
|
|
27
|
+
exports.getTableName = getTableName;
|
|
28
|
+
const stopLocalDynamoDB = async (goldstackConfig, packageSchema, deploymentName) => {
|
|
29
|
+
deploymentName = (0, dynamoDBPackageUtils_1.getDeploymentName)(deploymentName);
|
|
30
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
31
|
+
goldstackJson: goldstackConfig,
|
|
32
|
+
packageSchema,
|
|
33
|
+
});
|
|
34
|
+
await (0, localDynamoDB_1.stopLocalDynamoDB)(packageConfig, deploymentName);
|
|
35
|
+
const coldStartKey = getColdStartKey(packageConfig, deploymentName);
|
|
36
|
+
coldStart.delete(coldStartKey);
|
|
37
|
+
};
|
|
38
|
+
exports.stopLocalDynamoDB = stopLocalDynamoDB;
|
|
39
|
+
const createClient = async (packageConfig, deploymentName) => {
|
|
40
|
+
if (deploymentName === 'local') {
|
|
41
|
+
return (0, localDynamoDB_1.localConnect)(packageConfig, deploymentName);
|
|
42
|
+
}
|
|
43
|
+
const deployment = packageConfig.getDeployment(deploymentName);
|
|
44
|
+
const awsUser = await (0, infra_aws_1.getAWSUser)(deployment.awsUser);
|
|
45
|
+
const dynamoDB = new dynamodb_1.default({
|
|
46
|
+
apiVersion: '2012-08-10',
|
|
47
|
+
credentials: awsUser,
|
|
48
|
+
region: deployment.awsRegion,
|
|
49
|
+
});
|
|
50
|
+
return dynamoDB;
|
|
51
|
+
};
|
|
52
|
+
const connect = async ({ goldstackConfig, packageSchema, migrations, deploymentName, }) => {
|
|
53
|
+
deploymentName = (0, dynamoDBPackageUtils_1.getDeploymentName)(deploymentName);
|
|
54
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
55
|
+
goldstackJson: goldstackConfig,
|
|
56
|
+
packageSchema,
|
|
57
|
+
});
|
|
58
|
+
const client = await createClient(packageConfig, deploymentName);
|
|
59
|
+
// ensure table initialisation and migrations are only performed once per cold start
|
|
60
|
+
const coldStartKey = getColdStartKey(packageConfig, deploymentName);
|
|
61
|
+
if (!coldStart.has(coldStartKey)) {
|
|
62
|
+
await (0, dynamoDBData_1.assertTable)(packageConfig, deploymentName, client);
|
|
63
|
+
await (0, dynamoDBMigrations_1.performMigrations)(packageConfig, deploymentName, migrations, client);
|
|
64
|
+
coldStart.set(coldStartKey, true);
|
|
65
|
+
}
|
|
66
|
+
return client;
|
|
67
|
+
};
|
|
68
|
+
exports.connect = connect;
|
|
69
|
+
/**
|
|
70
|
+
* Deletes the DynamoDB table with all its data.
|
|
71
|
+
*/
|
|
72
|
+
const deleteTable = async ({ goldstackConfig, packageSchema, deploymentName, }) => {
|
|
73
|
+
deploymentName = (0, dynamoDBPackageUtils_1.getDeploymentName)(deploymentName);
|
|
74
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
75
|
+
goldstackJson: goldstackConfig,
|
|
76
|
+
packageSchema,
|
|
77
|
+
});
|
|
78
|
+
const client = await createClient(packageConfig, deploymentName);
|
|
79
|
+
await (0, dynamoDBData_1.deleteTable)(packageConfig, deploymentName, client);
|
|
80
|
+
return client;
|
|
81
|
+
};
|
|
82
|
+
exports.deleteTable = deleteTable;
|
|
83
|
+
const migrateDownTo = async ({ migrationName, goldstackConfig, packageSchema, migrations, deploymentName, }) => {
|
|
84
|
+
deploymentName = (0, dynamoDBPackageUtils_1.getDeploymentName)(deploymentName);
|
|
85
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
86
|
+
goldstackJson: goldstackConfig,
|
|
87
|
+
packageSchema,
|
|
88
|
+
});
|
|
89
|
+
const client = await createClient(packageConfig, deploymentName);
|
|
90
|
+
await (0, dynamoDBData_1.assertTable)(packageConfig, deploymentName, client);
|
|
91
|
+
await (0, dynamoDBMigrations_1.migrateDownTo)(migrationName, packageConfig, deploymentName, migrations, client);
|
|
92
|
+
return client;
|
|
93
|
+
};
|
|
94
|
+
exports.migrateDownTo = migrateDownTo;
|
|
95
|
+
function getColdStartKey(packageConfig, deploymentName) {
|
|
96
|
+
if (deploymentName === 'local') {
|
|
97
|
+
return `local-${(0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName)}`;
|
|
98
|
+
}
|
|
99
|
+
const deployment = packageConfig.getDeployment(deploymentName);
|
|
100
|
+
const coldStartKey = `${deployment.awsRegion}-${deploymentName}-${deployment.tableName}`;
|
|
101
|
+
return coldStartKey;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=templateDynamoDBTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateDynamoDBTable.js","sourceRoot":"","sources":["../../src/templateDynamoDBTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AWSDeployment } from '@goldstack/infra-aws';
|
|
2
|
+
import { TerraformDeployment } from '@goldstack/utils-terraform';
|
|
3
|
+
import { Deployment } from '@goldstack/infra';
|
|
4
|
+
import { DynamoDBDeploymentConfiguration } from './DynamoDBDeploymentConfiguration';
|
|
5
|
+
export type { AWSDeployment, TerraformDeployment, Deployment, DynamoDBDeploymentConfiguration, };
|
|
6
|
+
export interface ThisDeployment extends Deployment, AWSDeployment, TerraformDeployment {
|
|
7
|
+
configuration: DynamoDBDeploymentConfiguration;
|
|
8
|
+
}
|
|
9
|
+
export type { ThisDeployment as DynamoDBDeployment };
|
|
10
|
+
export default ThisDeployment;
|
|
11
|
+
//# sourceMappingURL=DynamoDBDeployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBDeployment.d.ts","sourceRoot":"","sources":["../../../src/types/DynamoDBDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,+BAA+B,GAChC,CAAC;AAEF,MAAM,WAAW,cACf,SAAQ,UAAU,EAChB,aAAa,EACb,mBAAmB;IACrB,aAAa,EAAE,+BAA+B,CAAC;CAChD;AAED,YAAY,EAAE,cAAc,IAAI,kBAAkB,EAAE,CAAC;AAErD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBDeployment.js","sourceRoot":"","sources":["../../../src/types/DynamoDBDeployment.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DeploymentConfiguration } from '@goldstack/infra';
|
|
2
|
+
export type { DeploymentConfiguration };
|
|
3
|
+
/**
|
|
4
|
+
* The name of the DynamoDB table. No spaces, numbers or special characters other than '-', '.' and '_' allowed.
|
|
5
|
+
*
|
|
6
|
+
* See https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html
|
|
7
|
+
*
|
|
8
|
+
* @title DynamoDB table name
|
|
9
|
+
* @pattern ^[A-Za-z0-9-\._]*$
|
|
10
|
+
*/
|
|
11
|
+
declare type TableName = string;
|
|
12
|
+
export interface ThisDeploymentConfiguration extends DeploymentConfiguration {
|
|
13
|
+
tableName: TableName;
|
|
14
|
+
}
|
|
15
|
+
export type { ThisDeploymentConfiguration as DynamoDBDeploymentConfiguration };
|
|
16
|
+
//# sourceMappingURL=DynamoDBDeploymentConfiguration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBDeploymentConfiguration.d.ts","sourceRoot":"","sources":["../../../src/types/DynamoDBDeploymentConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC;;;;;;;GAOG;AACH,aAAK,SAAS,GAAG,MAAM,CAAC;AAExB,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;IAC1E,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,YAAY,EAAE,2BAA2B,IAAI,+BAA+B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBDeploymentConfiguration.js","sourceRoot":"","sources":["../../../src/types/DynamoDBDeploymentConfiguration.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Package } from '@goldstack/utils-package';
|
|
2
|
+
import { DynamoDBConfiguration } from './DynamoDBPackageConfiguration';
|
|
3
|
+
import { DynamoDBDeployment } from './DynamoDBDeployment';
|
|
4
|
+
export type { DynamoDBConfiguration, DynamoDBDeployment };
|
|
5
|
+
/**
|
|
6
|
+
* Places where the DynamoDB table should be deployed to.
|
|
7
|
+
*
|
|
8
|
+
* @title Deployments
|
|
9
|
+
*/
|
|
10
|
+
export declare type DynamoDBDeployments = DynamoDBDeployment[];
|
|
11
|
+
/**
|
|
12
|
+
* A DynamoDB table.
|
|
13
|
+
*
|
|
14
|
+
* @title DynamoDB Package
|
|
15
|
+
*/
|
|
16
|
+
export interface ThisPackage extends Package {
|
|
17
|
+
configuration: DynamoDBConfiguration;
|
|
18
|
+
deployments: DynamoDBDeployments;
|
|
19
|
+
}
|
|
20
|
+
export type { ThisPackage as DynamoDBPackage };
|
|
21
|
+
export default ThisPackage;
|
|
22
|
+
//# sourceMappingURL=DynamoDBPackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBPackage.d.ts","sourceRoot":"","sources":["../../../src/types/DynamoDBPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;AAE1D;;;;GAIG;AACH,oBAAY,mBAAmB,GAAG,kBAAkB,EAAE,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,aAAa,EAAE,qBAAqB,CAAC;IACrC,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED,YAAY,EAAE,WAAW,IAAI,eAAe,EAAE,CAAC;AAE/C,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBPackage.js","sourceRoot":"","sources":["../../../src/types/DynamoDBPackage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Configuration } from '@goldstack/utils-package';
|
|
2
|
+
export type { Configuration };
|
|
3
|
+
/**
|
|
4
|
+
* DynamoDB Configuration
|
|
5
|
+
*
|
|
6
|
+
* @title DynamoDB Configuration
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export interface ThisPackageConfiguration extends Configuration {
|
|
10
|
+
[propName: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export type { ThisPackageConfiguration as DynamoDBConfiguration };
|
|
13
|
+
export default ThisPackageConfiguration;
|
|
14
|
+
//# sourceMappingURL=DynamoDBPackageConfiguration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBPackageConfiguration.d.ts","sourceRoot":"","sources":["../../../src/types/DynamoDBPackageConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB;AAED,YAAY,EAAE,wBAAwB,IAAI,qBAAqB,EAAE,CAAC;AAElE,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamoDBPackageConfiguration.js","sourceRoot":"","sources":["../../../src/types/DynamoDBPackageConfiguration.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import DynamoDB from 'aws-sdk/clients/dynamodb';
|
|
2
|
+
import { UmzugStorage } from 'umzug';
|
|
3
|
+
import { MigrationParams } from 'umzug/lib/types';
|
|
4
|
+
import { DynamoDBContext } from './dynamoDBMigrations';
|
|
5
|
+
export declare class DynamoDBStorage implements UmzugStorage<DynamoDBContext> {
|
|
6
|
+
dynamoClient: DynamoDB;
|
|
7
|
+
tableName: string;
|
|
8
|
+
migrationsKey: string;
|
|
9
|
+
partitionKey: string;
|
|
10
|
+
sortKey: string;
|
|
11
|
+
constructor({ dynamoDB, tableName, migrationsKey, partitionKey, sortKey, }: {
|
|
12
|
+
dynamoDB: DynamoDB;
|
|
13
|
+
tableName: string;
|
|
14
|
+
migrationsKey?: string;
|
|
15
|
+
partitionKey?: string;
|
|
16
|
+
sortKey?: string;
|
|
17
|
+
});
|
|
18
|
+
logMigration(params: MigrationParams<DynamoDBContext>): Promise<void>;
|
|
19
|
+
unlogMigration(params: MigrationParams<DynamoDBContext>): Promise<void>;
|
|
20
|
+
executed(): Promise<string[]>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=umzugDynamoDBStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"umzugDynamoDBStorage.d.ts","sourceRoot":"","sources":["../../src/umzugDynamoDBStorage.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAIhD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,eAAgB,YAAW,YAAY,CAAC,eAAe,CAAC;IACnE,YAAY,EAAE,QAAQ,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;gBAEJ,EACV,QAAQ,EACR,SAAS,EACT,aAA6B,EAC7B,YAAmB,EACnB,OAAc,GACf,EAAE;QACD,QAAQ,EAAE,QAAQ,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAQK,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,cAAc,CAClB,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAgBV,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAiCpC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamoDBStorage = void 0;
|
|
4
|
+
const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
|
|
5
|
+
class DynamoDBStorage {
|
|
6
|
+
constructor({ dynamoDB, tableName, migrationsKey = '#MIGRATIONS', partitionKey = 'pk', sortKey = 'sk', }) {
|
|
7
|
+
this.dynamoClient = dynamoDB;
|
|
8
|
+
this.tableName = tableName;
|
|
9
|
+
this.migrationsKey = migrationsKey;
|
|
10
|
+
this.partitionKey = partitionKey;
|
|
11
|
+
this.sortKey = sortKey;
|
|
12
|
+
}
|
|
13
|
+
async logMigration(params) {
|
|
14
|
+
try {
|
|
15
|
+
await params.context.client
|
|
16
|
+
.putItem({
|
|
17
|
+
TableName: params.context.tableName,
|
|
18
|
+
Item: (0, util_dynamodb_1.marshall)({
|
|
19
|
+
[this.partitionKey]: this.migrationsKey,
|
|
20
|
+
[this.sortKey]: params.name,
|
|
21
|
+
}),
|
|
22
|
+
})
|
|
23
|
+
.promise();
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
throw new Error(`Failed to log migration ${params.name}. ` + e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async unlogMigration(params) {
|
|
30
|
+
try {
|
|
31
|
+
await params.context.client
|
|
32
|
+
.deleteItem({
|
|
33
|
+
TableName: this.tableName,
|
|
34
|
+
Key: (0, util_dynamodb_1.marshall)({
|
|
35
|
+
[this.partitionKey]: this.migrationsKey,
|
|
36
|
+
[this.sortKey]: params.name,
|
|
37
|
+
}),
|
|
38
|
+
})
|
|
39
|
+
.promise();
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
throw new Error(`Failed to unlog migration ${params.name}. ` + e);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async executed() {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
const migrations = [];
|
|
48
|
+
let res = undefined;
|
|
49
|
+
let lastEvaluatedKey = undefined;
|
|
50
|
+
do {
|
|
51
|
+
res = await this.dynamoClient
|
|
52
|
+
.query({
|
|
53
|
+
TableName: this.tableName,
|
|
54
|
+
KeyConditionExpression: '#pk = :pk',
|
|
55
|
+
ExpressionAttributeNames: {
|
|
56
|
+
'#pk': this.partitionKey,
|
|
57
|
+
},
|
|
58
|
+
ExpressionAttributeValues: (0, util_dynamodb_1.marshall)({
|
|
59
|
+
':pk': this.migrationsKey,
|
|
60
|
+
}),
|
|
61
|
+
ExclusiveStartKey: lastEvaluatedKey,
|
|
62
|
+
})
|
|
63
|
+
.promise();
|
|
64
|
+
lastEvaluatedKey = res.LastEvaluatedKey;
|
|
65
|
+
const items = (_a = res === null || res === void 0 ? void 0 : res.Items) === null || _a === void 0 ? void 0 : _a.map((entry) => {
|
|
66
|
+
return (0, util_dynamodb_1.unmarshall)(entry);
|
|
67
|
+
});
|
|
68
|
+
if (items) {
|
|
69
|
+
migrations.push(...items);
|
|
70
|
+
}
|
|
71
|
+
} while (((_b = res === null || res === void 0 ? void 0 : res.Items) === null || _b === void 0 ? void 0 : _b.length) && lastEvaluatedKey);
|
|
72
|
+
return migrations.map((m) => m[this.sortKey]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.DynamoDBStorage = DynamoDBStorage;
|
|
76
|
+
//# sourceMappingURL=umzugDynamoDBStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"umzugDynamoDBStorage.js","sourceRoot":"","sources":["../../src/umzugDynamoDBStorage.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@goldstack/template-dynamodb",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Utilities for building modules for DynamoDB access.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"goldstack",
|
|
7
|
+
"utility",
|
|
8
|
+
"infrastructure",
|
|
9
|
+
"dynamodb",
|
|
10
|
+
"aws",
|
|
11
|
+
"IaC",
|
|
12
|
+
"configuration"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://goldstack.party",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/goldstack/goldstack/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/goldstack/goldstack.git"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": "Max Rohde",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"main": "dist/src/templateDynamoDB.js",
|
|
26
|
+
"bin": {
|
|
27
|
+
"template": "./bin/template",
|
|
28
|
+
"template-s3": "./bin/template"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "yarn clean && yarn compile",
|
|
32
|
+
"build:watch": "yarn clean && yarn compile-watch",
|
|
33
|
+
"clean": "rimraf ./dist",
|
|
34
|
+
"compile": "tsc -p tsconfig.json",
|
|
35
|
+
"compile-watch": "tsc -p tsconfig.json --watch",
|
|
36
|
+
"compile-watch:light": "nodemon --watch ./src/ -e '*' --exec 'yarn compile'",
|
|
37
|
+
"coverage": "jest --collect-coverage --passWithNoTests --config=./jest.config.js --runInBand",
|
|
38
|
+
"generate-schema": "ts-node scripts/generateSchemas.ts && cp schemas/* ../../../templates/packages/dynamodb/schemas",
|
|
39
|
+
"prepublishOnly": "yarn run build",
|
|
40
|
+
"publish": "utils-git changed --exec \"yarn npm publish $@\"",
|
|
41
|
+
"test-ci": "jest --passWithNoTests --config=./jest.config.js --runInBand",
|
|
42
|
+
"version:apply": "utils-git changed --exec \"yarn version $@ && yarn version apply\"",
|
|
43
|
+
"version:apply:force": "yarn version $@ && yarn version apply"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@aws-sdk/util-dynamodb": "^3.87.0",
|
|
47
|
+
"@goldstack/infra": "0.3.35",
|
|
48
|
+
"@goldstack/infra-aws": "0.3.43",
|
|
49
|
+
"@goldstack/utils-cli": "0.2.12",
|
|
50
|
+
"@goldstack/utils-config": "0.3.32",
|
|
51
|
+
"@goldstack/utils-docker": "0.3.37",
|
|
52
|
+
"@goldstack/utils-log": "0.2.13",
|
|
53
|
+
"@goldstack/utils-package": "0.3.37",
|
|
54
|
+
"@goldstack/utils-package-config": "0.3.37",
|
|
55
|
+
"@goldstack/utils-sh": "0.4.30",
|
|
56
|
+
"@goldstack/utils-template": "0.3.34",
|
|
57
|
+
"@goldstack/utils-terraform": "0.3.67",
|
|
58
|
+
"@goldstack/utils-terraform-aws": "0.3.66",
|
|
59
|
+
"aws-sdk": "2.1055.0",
|
|
60
|
+
"source-map-support": "^0.5.21",
|
|
61
|
+
"testcontainers": "^8.10.0",
|
|
62
|
+
"umzug": "^3.1.1",
|
|
63
|
+
"yargs": "^15.4.1"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@goldstack/utils-docs-cli": "0.3.11",
|
|
67
|
+
"@goldstack/utils-git": "0.1.33",
|
|
68
|
+
"@goldstack/utils-package-config-generate": "0.2.13",
|
|
69
|
+
"@types/jest": "^27.5.1",
|
|
70
|
+
"@types/node": "^17.0.33",
|
|
71
|
+
"@types/yargs": "^15.0.5",
|
|
72
|
+
"jest": "^28.1.0",
|
|
73
|
+
"rimraf": "^3.0.2",
|
|
74
|
+
"ts-jest": "^28.0.2",
|
|
75
|
+
"ts-node": "^10.7.0",
|
|
76
|
+
"typescript": "^4.6.4"
|
|
77
|
+
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"main": "dist/src/templateDynamoDB.js"
|
|
80
|
+
}
|
|
81
|
+
}
|