@kravc/dos-dynamodb 1.0.0-alpha.4 → 1.0.0-alpha.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/src/Document/DocumentWithHashId.d.ts +1 -1
- package/dist/src/Document/DocumentWithHashId.d.ts.map +1 -1
- package/dist/src/Document/DocumentWithHashId.js.map +1 -1
- package/dist/src/Table/helpers/buildTableSchema.d.ts.map +1 -1
- package/dist/src/Table/helpers/buildTableSchema.js +12 -10
- package/dist/src/Table/helpers/buildTableSchema.js.map +1 -1
- package/package.json +2 -2
- package/src/Document/DocumentWithHashId.ts +1 -1
- package/src/Table/helpers/__tests__/buildTableSchema.test.ts +13 -8
- package/src/Table/helpers/buildTableSchema.ts +16 -12
|
@@ -3,7 +3,7 @@ import { type QueryMap, type Context } from '@kravc/dos';
|
|
|
3
3
|
/** Document class that uses hash ID as id key. */
|
|
4
4
|
declare class DocumentWithHashId<T> extends Document<T> {
|
|
5
5
|
/** Returns salt for hash ID method. */
|
|
6
|
-
static getSalt
|
|
6
|
+
static getSalt(_context: Context, _attributes: unknown): string;
|
|
7
7
|
/** Returns number key. */
|
|
8
8
|
static get numberKey(): string;
|
|
9
9
|
/** Ensures index query without index name uses lsi1 to sort documents. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentWithHashId.d.ts","sourceRoot":"","sources":["../../../src/Document/DocumentWithHashId.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,OAAO,EAA6B,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAMpF,kDAAkD;AAClD,cAAM,kBAAkB,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC7C,uCAAuC;IAEvC,MAAM,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"DocumentWithHashId.d.ts","sourceRoot":"","sources":["../../../src/Document/DocumentWithHashId.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,OAAO,EAA6B,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAMpF,kDAAkD;AAClD,cAAM,kBAAkB,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC7C,uCAAuC;IAEvC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM;IAI/D,0BAA0B;IAC1B,MAAM,KAAK,SAAS,WAEnB;IAED,0EAA0E;IAC1E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;IAM5E,4CAA4C;WAC/B,sBAAsB,CAAC,OAAO,EAAE,OAAO;IAgBpD,wDAAwD;WAC3C,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAmCxE;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentWithHashId.js","sourceRoot":"","sources":["../../../src/Document/DocumentWithHashId.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,0DAAkC;AAClC,mCAAkC;AAClC,oCAAoF;AAEpF,MAAM,aAAa,GAAG,sCAAsC,CAAC;AAC7D,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,kDAAkD;AAClD,MAAM,kBAAsB,SAAQ,kBAAW;IAC7C,uCAAuC;IACvC,6DAA6D;IAC7D,MAAM,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"DocumentWithHashId.js","sourceRoot":"","sources":["../../../src/Document/DocumentWithHashId.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTableSchema.d.ts","sourceRoot":"","sources":["../../../../src/Table/helpers/buildTableSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"buildTableSchema.d.ts","sourceRoot":"","sources":["../../../../src/Table/helpers/buildTableSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,0BAA0B,CAAC;AAmGlC,qDAAqD;AACrD,QAAA,MAAM,gBAAgB,GAAI,8FAMvB,YAAY,KAAG,gBAwCjB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -19,9 +19,7 @@ const getAttributeDefinitions = (primaryKey, localSecondaryIndexes, globalSecond
|
|
|
19
19
|
for (const globalIndexKey in globalSecondaryIndexes) {
|
|
20
20
|
const { partitionKey, sortKey } = globalSecondaryIndexes[globalIndexKey];
|
|
21
21
|
attributes.push(partitionKey);
|
|
22
|
-
|
|
23
|
-
attributes.push(sortKey);
|
|
24
|
-
}
|
|
22
|
+
attributes.push(sortKey);
|
|
25
23
|
}
|
|
26
24
|
attributes = (0, lodash_1.uniq)(attributes);
|
|
27
25
|
const AttributeDefinitions = attributes
|
|
@@ -39,13 +37,11 @@ const getSecondaryIndex = (IndexName, partitionKey, sortKey) => {
|
|
|
39
37
|
KeyType: 'HASH',
|
|
40
38
|
AttributeName: partitionKey
|
|
41
39
|
},
|
|
42
|
-
|
|
43
|
-
if (sortKey) {
|
|
44
|
-
KeySchema.push({
|
|
40
|
+
{
|
|
45
41
|
KeyType: 'RANGE',
|
|
46
42
|
AttributeName: sortKey
|
|
47
|
-
}
|
|
48
|
-
|
|
43
|
+
},
|
|
44
|
+
];
|
|
49
45
|
const index = {
|
|
50
46
|
IndexName,
|
|
51
47
|
KeySchema,
|
|
@@ -84,9 +80,15 @@ const buildTableSchema = ({ name: TableName, primaryKey, isLocalhost, localSecon
|
|
|
84
80
|
TableName,
|
|
85
81
|
KeySchema,
|
|
86
82
|
AttributeDefinitions,
|
|
87
|
-
LocalSecondaryIndexes,
|
|
88
|
-
GlobalSecondaryIndexes,
|
|
89
83
|
};
|
|
84
|
+
const hasLocalSecondaryIndexes = LocalSecondaryIndexes.length > 0;
|
|
85
|
+
if (hasLocalSecondaryIndexes) {
|
|
86
|
+
schema.LocalSecondaryIndexes = LocalSecondaryIndexes;
|
|
87
|
+
}
|
|
88
|
+
const hasGlobalSecondaryIndexes = GlobalSecondaryIndexes.length > 0;
|
|
89
|
+
if (hasGlobalSecondaryIndexes) {
|
|
90
|
+
schema.GlobalSecondaryIndexes = GlobalSecondaryIndexes;
|
|
91
|
+
}
|
|
90
92
|
/* istanbul ignore else */
|
|
91
93
|
if (isLocalhost) {
|
|
92
94
|
schema.ProvisionedThroughput = ProvisionedThroughput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTableSchema.js","sourceRoot":"","sources":["../../../../src/Table/helpers/buildTableSchema.ts"],"names":[],"mappings":";;AAAA,mCAA8B;AAQ9B,MAAM,qBAAqB,GAAG;IAC5B,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF,sDAAsD;AACtD,MAAM,uBAAuB,GAAG,CAC9B,UAAsB,EACtB,qBAA4B,EAC5B,sBAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAE7C,IAAI,UAAU,GAAG,CAAE,YAAY,EAAE,OAAO,CAAE,CAAC;IAE3C,KAAK,MAAM,aAAa,IAAI,qBAAqB,EAAE,CAAC;QAClD,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAEzD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,cAAc,IAAI,sBAAsB,EAAE,CAAC;QACpD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAEzE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"buildTableSchema.js","sourceRoot":"","sources":["../../../../src/Table/helpers/buildTableSchema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kravc/dos-dynamodb",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.6",
|
|
4
4
|
"description": "CRUD interface for DynamoDB table to be used with @kravc/dos service.",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+ssh://git@github.com/
|
|
9
|
+
"url": "git+ssh://git@github.com/slatstudio/dos-dynamodb.git"
|
|
10
10
|
},
|
|
11
11
|
"directories": {
|
|
12
12
|
"src": "src"
|
|
@@ -11,7 +11,7 @@ const DEFAULT_NUMBER_KEY = 'number';
|
|
|
11
11
|
class DocumentWithHashId<T> extends Document<T> {
|
|
12
12
|
/** Returns salt for hash ID method. */
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
|
-
static getSalt
|
|
14
|
+
static getSalt(_context: Context, _attributes: unknown): string {
|
|
15
15
|
return this.name;
|
|
16
16
|
};
|
|
17
17
|
|
|
@@ -2,18 +2,23 @@ import getTableOptions from '../getTableOptions';
|
|
|
2
2
|
import buildTableSchema from '../buildTableSchema';
|
|
3
3
|
|
|
4
4
|
describe('buildTableSchema(tableOptions)', () => {
|
|
5
|
-
it('supports global secondary indexes
|
|
5
|
+
it('supports no global secondary indexes', () => {
|
|
6
6
|
const tableOptions = getTableOptions('partition', 'id');
|
|
7
7
|
|
|
8
|
-
tableOptions.globalSecondaryIndexes = [
|
|
9
|
-
{
|
|
10
|
-
name: 'gsiTest',
|
|
11
|
-
partitionKey: 'gsiPartitionKey',
|
|
12
|
-
}
|
|
13
|
-
];
|
|
8
|
+
tableOptions.globalSecondaryIndexes = [];
|
|
14
9
|
|
|
15
10
|
const tableSchema = buildTableSchema(tableOptions);
|
|
16
11
|
|
|
17
|
-
expect(tableSchema.GlobalSecondaryIndexes).
|
|
12
|
+
expect(tableSchema.GlobalSecondaryIndexes).toBeUndefined();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('supports no local secondary indexes', () => {
|
|
16
|
+
const tableOptions = getTableOptions('partition', 'id');
|
|
17
|
+
|
|
18
|
+
tableOptions.localSecondaryIndexes = [];
|
|
19
|
+
|
|
20
|
+
const tableSchema = buildTableSchema(tableOptions);
|
|
21
|
+
|
|
22
|
+
expect(tableSchema.LocalSecondaryIndexes).toBeUndefined();
|
|
18
23
|
});
|
|
19
24
|
});
|
|
@@ -35,10 +35,7 @@ const getAttributeDefinitions = (
|
|
|
35
35
|
const { partitionKey, sortKey } = globalSecondaryIndexes[globalIndexKey];
|
|
36
36
|
|
|
37
37
|
attributes.push(partitionKey);
|
|
38
|
-
|
|
39
|
-
if (sortKey) {
|
|
40
|
-
attributes.push(sortKey);
|
|
41
|
-
}
|
|
38
|
+
attributes.push(sortKey);
|
|
42
39
|
}
|
|
43
40
|
|
|
44
41
|
attributes = uniq(attributes);
|
|
@@ -64,14 +61,11 @@ const getSecondaryIndex = (
|
|
|
64
61
|
KeyType: 'HASH',
|
|
65
62
|
AttributeName: partitionKey
|
|
66
63
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (sortKey) {
|
|
70
|
-
KeySchema.push({
|
|
64
|
+
{
|
|
71
65
|
KeyType: 'RANGE',
|
|
72
66
|
AttributeName: sortKey
|
|
73
|
-
}
|
|
74
|
-
|
|
67
|
+
},
|
|
68
|
+
];
|
|
75
69
|
|
|
76
70
|
const index = {
|
|
77
71
|
IndexName,
|
|
@@ -132,10 +126,20 @@ const buildTableSchema = ({
|
|
|
132
126
|
TableName,
|
|
133
127
|
KeySchema,
|
|
134
128
|
AttributeDefinitions,
|
|
135
|
-
LocalSecondaryIndexes,
|
|
136
|
-
GlobalSecondaryIndexes,
|
|
137
129
|
} as CreateTableInput;
|
|
138
130
|
|
|
131
|
+
const hasLocalSecondaryIndexes = LocalSecondaryIndexes.length > 0;
|
|
132
|
+
|
|
133
|
+
if (hasLocalSecondaryIndexes) {
|
|
134
|
+
schema.LocalSecondaryIndexes = LocalSecondaryIndexes;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const hasGlobalSecondaryIndexes = GlobalSecondaryIndexes.length > 0;
|
|
138
|
+
|
|
139
|
+
if (hasGlobalSecondaryIndexes) {
|
|
140
|
+
schema.GlobalSecondaryIndexes = GlobalSecondaryIndexes;
|
|
141
|
+
}
|
|
142
|
+
|
|
139
143
|
/* istanbul ignore else */
|
|
140
144
|
if (isLocalhost) {
|
|
141
145
|
schema.ProvisionedThroughput = ProvisionedThroughput;
|