@webiny/db-dynamodb 0.0.0-unstable.de38392959 → 0.0.0-unstable.e0bfc55d5a
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/DynamoDbDriver.d.ts +20 -14
- package/DynamoDbDriver.js +239 -17
- package/DynamoDbDriver.js.map +1 -1
- package/README.md +81 -1
- package/index.d.ts +1 -1
- package/index.js +1 -9
- package/index.js.map +1 -1
- package/package.json +15 -20
- package/plugins/definitions/AttributePlugin.d.ts +1 -1
- package/plugins/definitions/AttributePlugin.js.map +1 -1
- package/plugins/definitions/DateTimeTransformPlugin.d.ts +2 -1
- package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -1
- package/plugins/definitions/FieldPathPlugin.js.map +1 -1
- package/plugins/definitions/FieldPlugin.d.ts +2 -2
- package/plugins/definitions/FieldPlugin.js.map +1 -1
- package/plugins/definitions/TimeTransformPlugin.d.ts +2 -1
- package/plugins/definitions/TimeTransformPlugin.js +7 -6
- package/plugins/definitions/TimeTransformPlugin.js.map +1 -1
- package/plugins/definitions/ValueFilterPlugin.d.ts +2 -2
- package/plugins/definitions/ValueFilterPlugin.js.map +1 -1
- package/plugins/definitions/ValueTransformPlugin.js.map +1 -1
- package/plugins/definitions/assignFields.js.map +1 -1
- package/plugins/filters/andIn.d.ts +1 -1
- package/plugins/filters/andIn.js +1 -2
- package/plugins/filters/andIn.js.map +1 -1
- package/plugins/filters/between.d.ts +1 -1
- package/plugins/filters/between.js +1 -2
- package/plugins/filters/between.js.map +1 -1
- package/plugins/filters/contains.d.ts +1 -1
- package/plugins/filters/contains.js +22 -4
- package/plugins/filters/contains.js.map +1 -1
- package/plugins/filters/eq.d.ts +1 -1
- package/plugins/filters/eq.js +3 -4
- package/plugins/filters/eq.js.map +1 -1
- package/plugins/filters/fuzzy.d.ts +1 -1
- package/plugins/filters/fuzzy.js +1 -2
- package/plugins/filters/fuzzy.js.map +1 -1
- package/plugins/filters/gt.d.ts +1 -1
- package/plugins/filters/gt.js +1 -2
- package/plugins/filters/gt.js.map +1 -1
- package/plugins/filters/gte.d.ts +1 -1
- package/plugins/filters/gte.js +1 -2
- package/plugins/filters/gte.js.map +1 -1
- package/plugins/filters/in.d.ts +1 -1
- package/plugins/filters/in.js +1 -2
- package/plugins/filters/in.js.map +1 -1
- package/plugins/filters/index.d.ts +1 -1
- package/plugins/filters/index.js.map +1 -1
- package/plugins/filters/lt.d.ts +1 -1
- package/plugins/filters/lt.js +1 -2
- package/plugins/filters/lt.js.map +1 -1
- package/plugins/filters/lte.d.ts +1 -1
- package/plugins/filters/lte.js +1 -2
- package/plugins/filters/lte.js.map +1 -1
- package/plugins/filters/startsWith.d.ts +1 -1
- package/plugins/filters/startsWith.js +1 -2
- package/plugins/filters/startsWith.js.map +1 -1
- package/plugins/index.d.ts +1 -1
- package/plugins/index.js.map +1 -1
- package/store/entity.d.ts +78 -0
- package/store/entity.js +41 -0
- package/store/entity.js.map +1 -0
- package/store/keys.d.ts +6 -0
- package/store/keys.js +22 -0
- package/store/keys.js.map +1 -0
- package/store/types.d.ts +7 -0
- package/store/types.js +7 -0
- package/store/types.js.map +1 -0
- package/toolbox.d.ts +1 -1
- package/toolbox.js.map +1 -1
- package/types.d.ts +3 -24
- package/types.js.map +1 -1
- package/utils/attributes.d.ts +2 -2
- package/utils/attributes.js.map +1 -1
- package/utils/{batchRead.d.ts → batch/batchRead.d.ts} +3 -2
- package/utils/batch/batchRead.js.map +1 -0
- package/utils/batch/batchWrite.d.ts +13 -0
- package/utils/batch/batchWrite.js.map +1 -0
- package/utils/batch/index.d.ts +3 -0
- package/utils/batch/index.js +40 -0
- package/utils/batch/index.js.map +1 -0
- package/utils/batch/types.d.ts +25 -0
- package/utils/batch/types.js +7 -0
- package/utils/batch/types.js.map +1 -0
- package/utils/cleanup.d.ts +3 -3
- package/utils/cleanup.js +1 -1
- package/utils/cleanup.js.map +1 -1
- package/utils/count.d.ts +1 -1
- package/utils/count.js.map +1 -1
- package/utils/createEntity.d.ts +2 -1
- package/utils/createEntity.js.map +1 -1
- package/utils/createTable.d.ts +5 -4
- package/utils/createTable.js.map +1 -1
- package/utils/cursor.js.map +1 -1
- package/utils/delete.d.ts +8 -8
- package/utils/delete.js.map +1 -1
- package/utils/entity/Entity.d.ts +26 -0
- package/utils/entity/Entity.js +77 -0
- package/utils/entity/Entity.js.map +1 -0
- package/utils/entity/EntityReadBatch.d.ts +17 -0
- package/utils/entity/EntityReadBatch.js +41 -0
- package/utils/entity/EntityReadBatch.js.map +1 -0
- package/utils/entity/EntityReadBatchBuilder.d.ts +10 -0
- package/utils/entity/EntityReadBatchBuilder.js +29 -0
- package/utils/entity/EntityReadBatchBuilder.js.map +1 -0
- package/utils/entity/EntityWriteBatch.d.ts +22 -0
- package/utils/entity/EntityWriteBatch.js +59 -0
- package/utils/entity/EntityWriteBatch.js.map +1 -0
- package/utils/entity/EntityWriteBatchBuilder.d.ts +11 -0
- package/utils/entity/EntityWriteBatchBuilder.js +28 -0
- package/utils/entity/EntityWriteBatchBuilder.js.map +1 -0
- package/utils/entity/getEntity.d.ts +4 -0
- package/utils/entity/getEntity.js +19 -0
- package/utils/entity/getEntity.js.map +1 -0
- package/utils/entity/index.d.ts +7 -0
- package/utils/entity/index.js +84 -0
- package/utils/entity/index.js.map +1 -0
- package/utils/entity/types.d.ts +51 -0
- package/utils/entity/types.js +7 -0
- package/utils/entity/types.js.map +1 -0
- package/utils/filter.d.ts +2 -2
- package/utils/filter.js.map +1 -1
- package/utils/get.d.ts +6 -5
- package/utils/get.js.map +1 -1
- package/utils/index.d.ts +3 -3
- package/utils/index.js +30 -30
- package/utils/index.js.map +1 -1
- package/utils/listResponse.js.map +1 -1
- package/utils/put.d.ts +10 -9
- package/utils/put.js +2 -1
- package/utils/put.js.map +1 -1
- package/utils/query.d.ts +9 -3
- package/utils/query.js +24 -2
- package/utils/query.js.map +1 -1
- package/utils/scan.d.ts +12 -7
- package/utils/scan.js +37 -5
- package/utils/scan.js.map +1 -1
- package/utils/sort.d.ts +1 -1
- package/utils/sort.js.map +1 -1
- package/utils/table/Table.d.ts +11 -0
- package/utils/table/Table.js +38 -0
- package/utils/table/Table.js.map +1 -0
- package/utils/table/TableReadBatch.d.ts +19 -0
- package/utils/table/TableReadBatch.js +62 -0
- package/utils/table/TableReadBatch.js.map +1 -0
- package/utils/table/TableWriteBatch.d.ts +21 -0
- package/utils/table/TableWriteBatch.js +69 -0
- package/utils/table/TableWriteBatch.js.map +1 -0
- package/utils/table/index.d.ts +4 -0
- package/utils/table/index.js +51 -0
- package/utils/table/index.js.map +1 -0
- package/utils/table/types.d.ts +39 -0
- package/utils/table/types.js +7 -0
- package/utils/table/types.js.map +1 -0
- package/utils/update.d.ts +2 -1
- package/utils/update.js +2 -1
- package/utils/update.js.map +1 -1
- package/plugins/definitions/NumberTransformPlugin.d.ts +0 -4
- package/plugins/definitions/NumberTransformPlugin.js +0 -36
- package/plugins/definitions/NumberTransformPlugin.js.map +0 -1
- package/utils/batchRead.js.map +0 -1
- package/utils/batchWrite.d.ts +0 -29
- package/utils/batchWrite.js.map +0 -1
- package/utils/table.d.ts +0 -7
- package/utils/table.js +0 -24
- package/utils/table.js.map +0 -1
- /package/utils/{batchRead.js → batch/batchRead.js} +0 -0
- /package/utils/{batchWrite.js → batch/batchWrite.js} +0 -0
package/DynamoDbDriver.d.ts
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DbDriver,
|
|
1
|
+
import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
|
|
2
|
+
import type { DbDriver, GetValueResult, GetValuesResult, IListValuesParams, ListValuesResult, RemoveValueResult, RemoveValuesResult, StorageKey, StoreValueResult, StoreValuesResult } from "@webiny/db";
|
|
3
|
+
import type { Entity } from "dynamodb-toolbox";
|
|
4
|
+
import type { Table } from "./utils/createTable";
|
|
5
|
+
import type { GenericRecord } from "@webiny/api/types";
|
|
3
6
|
interface ConstructorArgs {
|
|
4
|
-
documentClient:
|
|
7
|
+
documentClient: DynamoDBDocument;
|
|
5
8
|
}
|
|
6
|
-
declare class DynamoDbDriver implements DbDriver {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
declare class DynamoDbDriver implements DbDriver<DynamoDBDocument> {
|
|
10
|
+
readonly documentClient: DynamoDBDocument;
|
|
11
|
+
private _table;
|
|
12
|
+
private _entity;
|
|
13
|
+
table(): Table;
|
|
14
|
+
entity(): Entity;
|
|
9
15
|
constructor({ documentClient }: ConstructorArgs);
|
|
10
|
-
getClient():
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
getClient(): DynamoDBDocument;
|
|
17
|
+
storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>>;
|
|
18
|
+
storeValues<V extends GenericRecord<StorageKey>>(values: V): Promise<StoreValuesResult<V>>;
|
|
19
|
+
getValue<V>(key: StorageKey): Promise<GetValueResult<V>>;
|
|
20
|
+
getValues<V extends GenericRecord<StorageKey>>(input: (keyof V)[]): Promise<GetValuesResult<V>>;
|
|
21
|
+
listValues<V extends GenericRecord<StorageKey>>(params?: IListValuesParams): Promise<ListValuesResult<V>>;
|
|
22
|
+
removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>>;
|
|
23
|
+
removeValues<V extends GenericRecord<StorageKey>>(input: (keyof V)[]): Promise<RemoveValuesResult<V>>;
|
|
18
24
|
}
|
|
19
25
|
export default DynamoDbDriver;
|
package/DynamoDbDriver.js
CHANGED
|
@@ -4,39 +4,261 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _createTable = require("./utils/createTable");
|
|
8
|
+
var _entity = require("./store/entity");
|
|
9
|
+
var _utils = require("./utils");
|
|
10
|
+
var _keys = require("./store/keys");
|
|
7
11
|
class DynamoDbDriver {
|
|
12
|
+
_table = undefined;
|
|
13
|
+
_entity = undefined;
|
|
14
|
+
table() {
|
|
15
|
+
if (this._table) {
|
|
16
|
+
return this._table;
|
|
17
|
+
}
|
|
18
|
+
this._table = (0, _createTable.createTable)({
|
|
19
|
+
documentClient: this.documentClient
|
|
20
|
+
});
|
|
21
|
+
return this._table;
|
|
22
|
+
}
|
|
23
|
+
entity() {
|
|
24
|
+
if (this._entity) {
|
|
25
|
+
return this._entity;
|
|
26
|
+
}
|
|
27
|
+
this._entity = (0, _entity.createEntity)({
|
|
28
|
+
table: this.table()
|
|
29
|
+
});
|
|
30
|
+
return this._entity;
|
|
31
|
+
}
|
|
8
32
|
constructor({
|
|
9
33
|
documentClient
|
|
10
34
|
}) {
|
|
11
|
-
this.batchProcesses = {};
|
|
12
35
|
this.documentClient = documentClient;
|
|
13
36
|
}
|
|
14
37
|
getClient() {
|
|
15
38
|
return this.documentClient;
|
|
16
39
|
}
|
|
17
|
-
async
|
|
18
|
-
|
|
40
|
+
async storeValue(key, input) {
|
|
41
|
+
let value;
|
|
42
|
+
try {
|
|
43
|
+
value = JSON.stringify(input);
|
|
44
|
+
} catch (ex) {
|
|
45
|
+
return {
|
|
46
|
+
key,
|
|
47
|
+
error: ex
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
await (0, _utils.put)({
|
|
52
|
+
entity: this.entity(),
|
|
53
|
+
item: {
|
|
54
|
+
PK: (0, _keys.createPartitionKey)(),
|
|
55
|
+
SK: (0, _keys.createSortKey)({
|
|
56
|
+
key
|
|
57
|
+
}),
|
|
58
|
+
TYPE: (0, _keys.createType)(),
|
|
59
|
+
key,
|
|
60
|
+
value
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
key,
|
|
65
|
+
data: input
|
|
66
|
+
};
|
|
67
|
+
} catch (ex) {
|
|
68
|
+
return {
|
|
69
|
+
key,
|
|
70
|
+
error: ex
|
|
71
|
+
};
|
|
72
|
+
}
|
|
19
73
|
}
|
|
20
|
-
async
|
|
21
|
-
|
|
74
|
+
async storeValues(values) {
|
|
75
|
+
const keys = Object.keys(values);
|
|
76
|
+
try {
|
|
77
|
+
const batch = keys.map(key => {
|
|
78
|
+
const input = values[key];
|
|
79
|
+
let value;
|
|
80
|
+
try {
|
|
81
|
+
value = JSON.stringify(input);
|
|
82
|
+
} catch (ex) {
|
|
83
|
+
throw ex;
|
|
84
|
+
}
|
|
85
|
+
const item = {
|
|
86
|
+
PK: (0, _keys.createPartitionKey)(),
|
|
87
|
+
SK: (0, _keys.createSortKey)({
|
|
88
|
+
key
|
|
89
|
+
}),
|
|
90
|
+
TYPE: (0, _keys.createType)(),
|
|
91
|
+
key,
|
|
92
|
+
value
|
|
93
|
+
};
|
|
94
|
+
return this.entity().putBatch(item);
|
|
95
|
+
});
|
|
96
|
+
await (0, _utils.batchWriteAll)({
|
|
97
|
+
table: this.table(),
|
|
98
|
+
items: batch
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
keys,
|
|
102
|
+
data: values
|
|
103
|
+
};
|
|
104
|
+
} catch (ex) {
|
|
105
|
+
return {
|
|
106
|
+
keys,
|
|
107
|
+
error: ex
|
|
108
|
+
};
|
|
109
|
+
}
|
|
22
110
|
}
|
|
23
|
-
async
|
|
24
|
-
|
|
111
|
+
async getValue(key) {
|
|
112
|
+
try {
|
|
113
|
+
const result = await (0, _utils.get)({
|
|
114
|
+
entity: this.entity(),
|
|
115
|
+
keys: {
|
|
116
|
+
PK: (0, _keys.createPartitionKey)(),
|
|
117
|
+
SK: (0, _keys.createSortKey)({
|
|
118
|
+
key
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
key,
|
|
124
|
+
data: result ? JSON.parse(result.value) : null
|
|
125
|
+
};
|
|
126
|
+
} catch (ex) {
|
|
127
|
+
return {
|
|
128
|
+
key,
|
|
129
|
+
error: ex
|
|
130
|
+
};
|
|
131
|
+
}
|
|
25
132
|
}
|
|
26
|
-
async
|
|
27
|
-
|
|
133
|
+
async getValues(input) {
|
|
134
|
+
const keys = [...input];
|
|
135
|
+
const batch = keys.map(key => {
|
|
136
|
+
return this.entity().getBatch({
|
|
137
|
+
PK: (0, _keys.createPartitionKey)(),
|
|
138
|
+
SK: (0, _keys.createSortKey)({
|
|
139
|
+
key
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
try {
|
|
144
|
+
const results = await (0, _utils.batchReadAll)({
|
|
145
|
+
table: this.table(),
|
|
146
|
+
items: batch
|
|
147
|
+
});
|
|
148
|
+
const data = keys.reduce((collection, key) => {
|
|
149
|
+
const result = results.find(item => {
|
|
150
|
+
return item.PK === (0, _keys.createPartitionKey)() && item.SK === (0, _keys.createSortKey)({
|
|
151
|
+
key
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
if (!result?.value) {
|
|
155
|
+
// @ts-expect-error
|
|
156
|
+
collection[key] = null;
|
|
157
|
+
return collection;
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
// @ts-expect-error
|
|
161
|
+
collection[key] = JSON.parse(result.value);
|
|
162
|
+
} catch {
|
|
163
|
+
// @ts-expect-error
|
|
164
|
+
collection[key] = null;
|
|
165
|
+
}
|
|
166
|
+
return collection;
|
|
167
|
+
}, {});
|
|
168
|
+
return {
|
|
169
|
+
keys,
|
|
170
|
+
data
|
|
171
|
+
};
|
|
172
|
+
} catch (ex) {
|
|
173
|
+
return {
|
|
174
|
+
keys,
|
|
175
|
+
error: ex
|
|
176
|
+
};
|
|
177
|
+
}
|
|
28
178
|
}
|
|
29
|
-
async
|
|
30
|
-
|
|
179
|
+
async listValues(params) {
|
|
180
|
+
try {
|
|
181
|
+
const partitionKey = (0, _keys.createPartitionKey)();
|
|
182
|
+
const options = {
|
|
183
|
+
...params
|
|
184
|
+
};
|
|
185
|
+
const results = await (0, _utils.queryAll)({
|
|
186
|
+
entity: this.entity(),
|
|
187
|
+
partitionKey,
|
|
188
|
+
options
|
|
189
|
+
});
|
|
190
|
+
const data = results.reduce((collection, item) => {
|
|
191
|
+
try {
|
|
192
|
+
// @ts-expect-error
|
|
193
|
+
collection[item.key] = JSON.parse(item.value);
|
|
194
|
+
} catch (ex) {
|
|
195
|
+
// @ts-expect-error
|
|
196
|
+
collection[item.key] = null;
|
|
197
|
+
}
|
|
198
|
+
return collection;
|
|
199
|
+
}, {});
|
|
200
|
+
return {
|
|
201
|
+
keys: Object.keys(data),
|
|
202
|
+
data
|
|
203
|
+
};
|
|
204
|
+
} catch (ex) {
|
|
205
|
+
return {
|
|
206
|
+
error: ex
|
|
207
|
+
};
|
|
208
|
+
}
|
|
31
209
|
}
|
|
32
|
-
async
|
|
33
|
-
|
|
210
|
+
async removeValue(key) {
|
|
211
|
+
const result = await this.getValue(key);
|
|
212
|
+
if (result.error) {
|
|
213
|
+
return {
|
|
214
|
+
key,
|
|
215
|
+
error: result.error
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
try {
|
|
219
|
+
await this.entity().delete({
|
|
220
|
+
PK: (0, _keys.createPartitionKey)(),
|
|
221
|
+
SK: (0, _keys.createSortKey)({
|
|
222
|
+
key
|
|
223
|
+
})
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
key,
|
|
227
|
+
data: result.data
|
|
228
|
+
};
|
|
229
|
+
} catch (ex) {
|
|
230
|
+
return {
|
|
231
|
+
key,
|
|
232
|
+
error: ex
|
|
233
|
+
};
|
|
234
|
+
}
|
|
34
235
|
}
|
|
35
|
-
|
|
36
|
-
|
|
236
|
+
async removeValues(input) {
|
|
237
|
+
const keys = [...input];
|
|
238
|
+
const batch = keys.map(key => {
|
|
239
|
+
return this.entity().deleteBatch({
|
|
240
|
+
PK: (0, _keys.createPartitionKey)(),
|
|
241
|
+
SK: (0, _keys.createSortKey)({
|
|
242
|
+
key
|
|
243
|
+
})
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
try {
|
|
247
|
+
await (0, _utils.batchWriteAll)({
|
|
248
|
+
table: this.table(),
|
|
249
|
+
items: batch
|
|
250
|
+
});
|
|
251
|
+
return {
|
|
252
|
+
keys
|
|
253
|
+
};
|
|
254
|
+
} catch (ex) {
|
|
255
|
+
return {
|
|
256
|
+
keys,
|
|
257
|
+
error: ex
|
|
258
|
+
};
|
|
259
|
+
}
|
|
37
260
|
}
|
|
38
261
|
}
|
|
39
|
-
var _default = DynamoDbDriver;
|
|
40
|
-
exports.default = _default;
|
|
262
|
+
var _default = exports.default = DynamoDbDriver;
|
|
41
263
|
|
|
42
264
|
//# sourceMappingURL=DynamoDbDriver.js.map
|
package/DynamoDbDriver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DynamoDbDriver","constructor","documentClient","batchProcesses","getClient","create","update","delete","read","createLog","readLogs","getBatchProcess","_default","exports","default"],"sources":["DynamoDbDriver.ts"],"sourcesContent":["import { DynamoDBClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { DbDriver, Result } from \"@webiny/db\";\n\ninterface ConstructorArgs {\n documentClient: DynamoDBClient;\n}\n\nclass DynamoDbDriver implements DbDriver {\n batchProcesses: Record<string, any>;\n documentClient: DynamoDBClient;\n constructor({ documentClient }: ConstructorArgs) {\n this.batchProcesses = {};\n this.documentClient = documentClient;\n }\n\n getClient() {\n return this.documentClient;\n }\n async create(): Promise<Result> {\n return [true, {}];\n }\n\n async update(): Promise<Result> {\n return [true, {}];\n }\n\n async delete(): Promise<Result> {\n return [true, {}];\n }\n\n async read<T>(): Promise<Result<T[]>> {\n return [[], {}];\n }\n\n async createLog(): Promise<Result> {\n return [true, {}];\n }\n\n async readLogs<T>() {\n return this.read<T>();\n }\n\n getBatchProcess() {\n // not empty\n }\n}\n\nexport default DynamoDbDriver;\n"],"mappings":";;;;;;AAOA,MAAMA,cAAc,CAAqB;EAGrCC,WAAWA,CAAC;IAAEC;EAAgC,CAAC,EAAE;IAC7C,IAAI,CAACC,cAAc,GAAG,CAAC,CAAC;IACxB,IAAI,CAACD,cAAc,GAAGA,cAAc;EACxC;EAEAE,SAASA,CAAA,EAAG;IACR,OAAO,IAAI,CAACF,cAAc;EAC9B;EACA,MAAMG,MAAMA,CAAA,EAAoB;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,MAAMA,CAAA,EAAoB;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,MAAMA,CAAA,EAAoB;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,IAAIA,CAAA,EAA4B;IAClC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACnB;EAEA,MAAMC,SAASA,CAAA,EAAoB;IAC/B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,QAAQA,CAAA,EAAM;IAChB,OAAO,IAAI,CAACF,IAAI,CAAI,CAAC;EACzB;EAEAG,eAAeA,CAAA,EAAG;IACd;EAAA;AAER;AAAC,IAAAC,QAAA,GAEcZ,cAAc;AAAAa,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
1
|
+
{"version":3,"names":["_createTable","require","_entity","_utils","_keys","DynamoDbDriver","_table","undefined","table","createTable","documentClient","entity","createEntity","constructor","getClient","storeValue","key","input","value","JSON","stringify","ex","error","put","item","PK","createPartitionKey","SK","createSortKey","TYPE","createType","data","storeValues","values","keys","Object","batch","map","putBatch","batchWriteAll","items","getValue","result","get","parse","getValues","getBatch","results","batchReadAll","reduce","collection","find","listValues","params","partitionKey","options","queryAll","removeValue","delete","removeValues","deleteBatch","_default","exports","default"],"sources":["DynamoDbDriver.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type {\n DbDriver,\n GetValueResult,\n GetValuesResult,\n IListValuesParams,\n ListValuesResult,\n RemoveValueResult,\n RemoveValuesResult,\n StorageKey,\n StoreValueResult,\n StoreValuesResult\n} from \"@webiny/db\";\nimport type { Entity } from \"dynamodb-toolbox\";\nimport type { Table } from \"~/utils/createTable\";\nimport { createTable } from \"~/utils/createTable\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport { createEntity } from \"~/store/entity\";\nimport { batchReadAll, batchWriteAll, get, put, queryAll } from \"~/utils\";\nimport { createPartitionKey, createSortKey, createType } from \"~/store/keys\";\nimport type { IStoreItem } from \"~/store/types\";\n\ninterface ConstructorArgs {\n documentClient: DynamoDBDocument;\n}\n\nclass DynamoDbDriver implements DbDriver<DynamoDBDocument> {\n public readonly documentClient: DynamoDBDocument;\n\n private _table: Table | undefined = undefined;\n private _entity: Entity | undefined = undefined;\n\n public table(): Table {\n if (this._table) {\n return this._table;\n }\n this._table = createTable({\n documentClient: this.documentClient\n });\n return this._table;\n }\n\n public entity(): Entity {\n if (this._entity) {\n return this._entity;\n }\n this._entity = createEntity({\n table: this.table()\n });\n return this._entity;\n }\n\n constructor({ documentClient }: ConstructorArgs) {\n this.documentClient = documentClient;\n }\n\n public getClient() {\n return this.documentClient;\n }\n\n public async storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>> {\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n\n try {\n await put<IStoreItem>({\n entity: this.entity(),\n item: {\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n key,\n value\n }\n });\n\n return {\n key,\n data: input\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async storeValues<V extends GenericRecord<StorageKey>>(\n values: V\n ): Promise<StoreValuesResult<V>> {\n const keys = Object.keys(values);\n try {\n const batch = keys.map(key => {\n const input = values[key];\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n throw ex;\n }\n const item: IStoreItem = {\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n key,\n value\n };\n return this.entity().putBatch(item);\n });\n\n await batchWriteAll({\n table: this.table(),\n items: batch\n });\n return {\n keys,\n data: values\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async getValue<V>(key: StorageKey): Promise<GetValueResult<V>> {\n try {\n const result = await get<IStoreItem>({\n entity: this.entity(),\n keys: {\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n }\n });\n return {\n key,\n data: result ? JSON.parse(result.value) : null\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async getValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<GetValuesResult<V>> {\n const keys = [...input] as string[];\n const batch = keys.map(key => {\n return this.entity().getBatch({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n });\n\n try {\n const results = await batchReadAll<IStoreItem>({\n table: this.table(),\n items: batch\n });\n const data = keys.reduce((collection, key) => {\n const result = results.find(item => {\n return item.PK === createPartitionKey() && item.SK === createSortKey({ key });\n });\n if (!result?.value) {\n // @ts-expect-error\n collection[key] = null;\n return collection;\n }\n try {\n // @ts-expect-error\n collection[key] = JSON.parse(result.value);\n } catch {\n // @ts-expect-error\n collection[key] = null;\n }\n\n return collection;\n }, {} as V);\n return {\n keys,\n data\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async listValues<V extends GenericRecord<StorageKey>>(\n params?: IListValuesParams\n ): Promise<ListValuesResult<V>> {\n try {\n const partitionKey = createPartitionKey();\n const options = {\n ...params\n };\n const results = await queryAll<IStoreItem>({\n entity: this.entity(),\n partitionKey,\n options\n });\n\n const data = results.reduce((collection, item) => {\n try {\n // @ts-expect-error\n collection[item.key] = JSON.parse(item.value);\n } catch (ex) {\n // @ts-expect-error\n collection[item.key] = null;\n }\n\n return collection;\n }, {} as V);\n\n return {\n keys: Object.keys(data),\n data\n };\n } catch (ex) {\n return {\n error: ex\n };\n }\n }\n\n public async removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>> {\n const result = await this.getValue<V>(key);\n if (result.error) {\n return {\n key,\n error: result.error\n };\n }\n try {\n await this.entity().delete({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n return {\n key,\n data: result.data\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n\n public async removeValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<RemoveValuesResult<V>> {\n const keys = [...input] as string[];\n const batch = keys.map(key => {\n return this.entity().deleteBatch({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n });\n\n try {\n await batchWriteAll({\n table: this.table(),\n items: batch\n });\n return {\n keys\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n}\n\nexport default DynamoDbDriver;\n"],"mappings":"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","ignoreList":[]}
|
package/README.md
CHANGED
|
@@ -14,6 +14,86 @@ For more information, please visit
|
|
|
14
14
|
yarn add @webiny/db-dynamodb
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
### Helper classes
|
|
18
|
+
We have some classes that ease the use of dynamodb-toolbox.
|
|
19
|
+
#### [Table](./src/utils/table/Table.ts)
|
|
20
|
+
```typescript
|
|
21
|
+
import { createTable } from "@webiny/db-dynamodb";
|
|
22
|
+
|
|
23
|
+
const table = createTable({...params});
|
|
24
|
+
const writer = table.createWriter(); // see TableWriteBatch
|
|
25
|
+
const reader = table.createReader(); // see TableReadBatch
|
|
26
|
+
|
|
27
|
+
const result = await table.scan({...params}); // see scan
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
#### [Entity](./src/utils/entity/Entity.ts)
|
|
31
|
+
```typescript
|
|
32
|
+
|
|
33
|
+
import { createEntity } from "@webiny/db-dynamodb";
|
|
34
|
+
|
|
35
|
+
const entity = createEntity({...params});
|
|
36
|
+
const writer = entity.createWriter(); // see EntityWriteBatch
|
|
37
|
+
const reader = entity.createReader(); // see EntityReadBatch
|
|
38
|
+
const tableWriter = entity.createTableWriter(); // see TableWriteBatch
|
|
39
|
+
|
|
40
|
+
const getResult = await entity.get({...params}); // see get
|
|
41
|
+
const getCleanResult = await entity.getClean({...params}); // see get
|
|
42
|
+
const queryAllResult = await entity.queryAll({...params}); // see queryAllClean
|
|
43
|
+
const queryOneResult = await entity.queryOne({...params}); // see queryOneClean
|
|
44
|
+
const putResult = await entity.put({...params}); // see put
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
#### [EntityWriteBatch](./src/utils/entity/EntityWriteBatch.ts)
|
|
49
|
+
```typescript
|
|
50
|
+
import { createEntityWriteBatch } from "@webiny/db-dynamodb";
|
|
51
|
+
|
|
52
|
+
const writer = createEntityWriteBatch({...params});
|
|
53
|
+
|
|
54
|
+
writer.put({...item});
|
|
55
|
+
writer.delete({...keys});
|
|
56
|
+
writer.delete({...moreKeys});
|
|
57
|
+
|
|
58
|
+
await writer.execute();
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### [EntityReadBatch](./src/utils/entity/EntityReadBatch.ts)
|
|
62
|
+
```typescript
|
|
63
|
+
import { createEntityReadBatch } from "@webiny/db-dynamodb";
|
|
64
|
+
|
|
65
|
+
const reader = createEntityReadBatch({...params});
|
|
66
|
+
|
|
67
|
+
reader.get({...keys});
|
|
68
|
+
reader.get({...moreKeys});
|
|
69
|
+
|
|
70
|
+
const result = await reader.execute();
|
|
71
|
+
```
|
|
72
|
+
#### [TableWriteBatch](./src/utils/table/TableWriteBatch.ts)
|
|
73
|
+
```typescript
|
|
74
|
+
import { createTableWriteBatch } from "@webiny/db-dynamodb";
|
|
75
|
+
|
|
76
|
+
const writer = createTableWriteBatch({...params});
|
|
77
|
+
|
|
78
|
+
writer.put(entity, {...item});
|
|
79
|
+
writer.delete(entity, {...keys});
|
|
80
|
+
writer.delete(entity, {...moreKeys});
|
|
81
|
+
|
|
82
|
+
await writer.execute();
|
|
83
|
+
```
|
|
84
|
+
#### [TableReadBatch](./src/utils/table/TableReadBatch.ts)
|
|
85
|
+
```typescript
|
|
86
|
+
import {createTableReadBatch} from "@webiny/db-dynamodb";
|
|
87
|
+
|
|
88
|
+
const reader = createTableReadBatch({...params});
|
|
89
|
+
|
|
90
|
+
writer.get(entity, {...keys});
|
|
91
|
+
writer.get(entity, {...moreKeys});
|
|
92
|
+
|
|
93
|
+
const result = await reader.execute();
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
|
|
17
97
|
|
|
18
98
|
### Helper functions
|
|
19
99
|
We have a number [helper](./src/utils) functions that ease the use of either dynamodb-toolbox, filtering, sorting or just creating proper response.
|
|
@@ -64,4 +144,4 @@ This function accepts items (records) to be filtered, a definition of fields to
|
|
|
64
144
|
#### [sort](./src/utils/sort.ts)
|
|
65
145
|
Sort the DynamoDB records by given sort condition.
|
|
66
146
|
|
|
67
|
-
This function accepts items (records) to be sorted, sort options (eg. createdBy_ASC, id_DESC, etc.) and a definitions of fields to sort by (not required by default if no field modification is required).
|
|
147
|
+
This function accepts items (records) to be sorted, sort options (eg. createdBy_ASC, id_DESC, etc.) and a definitions of fields to sort by (not required by default if no field modification is required).
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -5,15 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
var _exportNames = {
|
|
8
|
-
DynamoDbDriver: true
|
|
9
|
-
DbItem: true
|
|
8
|
+
DynamoDbDriver: true
|
|
10
9
|
};
|
|
11
|
-
Object.defineProperty(exports, "DbItem", {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: function () {
|
|
14
|
-
return _types.DbItem;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
10
|
Object.defineProperty(exports, "DynamoDbDriver", {
|
|
18
11
|
enumerable: true,
|
|
19
12
|
get: function () {
|
|
@@ -33,6 +26,5 @@ Object.keys(_utils).forEach(function (key) {
|
|
|
33
26
|
}
|
|
34
27
|
});
|
|
35
28
|
});
|
|
36
|
-
var _types = require("./types");
|
|
37
29
|
|
|
38
30
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_DynamoDbDriver","_interopRequireDefault","require","_utils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"
|
|
1
|
+
{"version":3,"names":["_DynamoDbDriver","_interopRequireDefault","require","_utils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["import { default as DynamoDbDriver } from \"./DynamoDbDriver\";\n\nexport * from \"./utils\";\nexport type { DbItem } from \"./types\";\n\nexport { DynamoDbDriver };\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/db-dynamodb",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.e0bfc55d5a",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -10,38 +10,33 @@
|
|
|
10
10
|
"author": "Webiny Ltd",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@webiny/api": "0.0.0-unstable.
|
|
14
|
-
"@webiny/aws-sdk": "0.0.0-unstable.
|
|
15
|
-
"@webiny/db": "0.0.0-unstable.
|
|
16
|
-
"@webiny/error": "0.0.0-unstable.
|
|
17
|
-
"@webiny/
|
|
18
|
-
"@webiny/
|
|
13
|
+
"@webiny/api": "0.0.0-unstable.e0bfc55d5a",
|
|
14
|
+
"@webiny/aws-sdk": "0.0.0-unstable.e0bfc55d5a",
|
|
15
|
+
"@webiny/db": "0.0.0-unstable.e0bfc55d5a",
|
|
16
|
+
"@webiny/error": "0.0.0-unstable.e0bfc55d5a",
|
|
17
|
+
"@webiny/plugins": "0.0.0-unstable.e0bfc55d5a",
|
|
18
|
+
"@webiny/utils": "0.0.0-unstable.e0bfc55d5a",
|
|
19
19
|
"date-fns": "2.29.3",
|
|
20
20
|
"dot-prop": "6.0.1",
|
|
21
21
|
"dynamodb-toolbox": "0.9.2",
|
|
22
22
|
"fuse.js": "7.0.0",
|
|
23
|
-
"is-number": "7.0.0",
|
|
24
23
|
"lodash": "4.17.21"
|
|
25
24
|
},
|
|
26
25
|
"devDependencies": {
|
|
27
|
-
"@
|
|
28
|
-
"@
|
|
29
|
-
"
|
|
30
|
-
"@webiny/cli": "0.0.0-unstable.de38392959",
|
|
31
|
-
"@webiny/project-utils": "0.0.0-unstable.de38392959",
|
|
32
|
-
"jest": "29.5.0",
|
|
26
|
+
"@types/is-number": "7.0.5",
|
|
27
|
+
"@webiny/project-utils": "0.0.0-unstable.e0bfc55d5a",
|
|
28
|
+
"jest": "29.7.0",
|
|
33
29
|
"jest-dynalite": "3.6.1",
|
|
34
|
-
"rimraf": "
|
|
35
|
-
"
|
|
36
|
-
"typescript": "4.7.4"
|
|
30
|
+
"rimraf": "6.0.1",
|
|
31
|
+
"typescript": "5.3.3"
|
|
37
32
|
},
|
|
38
33
|
"publishConfig": {
|
|
39
34
|
"access": "public",
|
|
40
35
|
"directory": "dist"
|
|
41
36
|
},
|
|
42
37
|
"scripts": {
|
|
43
|
-
"build": "
|
|
44
|
-
"watch": "
|
|
38
|
+
"build": "node ../cli/bin.js run build",
|
|
39
|
+
"watch": "node ../cli/bin.js run watch"
|
|
45
40
|
},
|
|
46
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "e0bfc55d5a4d6a42b32e6558d9fb2eb6753e331b"
|
|
47
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_plugins","reservedFields","AttributePlugin","Plugin","type","entity","_entity","attribute","_attribute","constructor","params","validateReserved","_params","getDefinition","includes","WebinyError","exports"],"sources":["AttributePlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport { AttributeDefinition } from \"~/toolbox\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\"];\n\nexport interface AttributePluginParams {\n entity: string;\n attribute: string;\n params: AttributeDefinition;\n}\n\nexport abstract class AttributePlugin extends Plugin {\n public static override readonly type: string = \"db.dynamodb.attribute\";\n private readonly _entity: string;\n private readonly _attribute: string;\n private readonly _params: AttributeDefinition;\n\n public get entity(): string {\n return this._entity;\n }\n\n public get attribute(): string {\n return this._attribute;\n }\n\n public constructor({ entity, attribute, params }: AttributePluginParams) {\n super();\n\n this.validateReserved(attribute);\n\n this._entity = entity;\n this._attribute = attribute;\n this._params = params;\n }\n\n public getDefinition(): Record<string, AttributeDefinition> {\n return {\n [this.attribute]: this._params\n };\n }\n\n private validateReserved(attribute: string): void {\n if (reservedFields.includes(attribute) === false) {\n return;\n }\n throw new WebinyError(\n `Attribute name \"${attribute}\" is not allowed.`,\n \"ATTRIBUTE_NOT_ALLOWED\",\n {\n attribute\n }\n );\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;AAQ7C,MAAeC,eAAe,SAASC,eAAM,CAAC;EACjD,OAAgCC,IAAI,GAAW,uBAAuB;EAKtE,IAAWC,MAAMA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACC,OAAO;EACvB;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACC,UAAU;EAC1B;EAEOC,WAAWA,CAAC;IAAEJ,MAAM;IAAEE,SAAS;IAAEG;EAA8B,CAAC,EAAE;IACrE,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,gBAAgB,CAACJ,SAAS,CAAC;IAEhC,IAAI,CAACD,OAAO,GAAGD,MAAM;IACrB,IAAI,CAACG,UAAU,GAAGD,SAAS;IAC3B,IAAI,CAACK,OAAO,GAAGF,MAAM;EACzB;EAEOG,aAAaA,CAAA,EAAwC;IACxD,OAAO;MACH,CAAC,IAAI,CAACN,SAAS,GAAG,IAAI,CAACK;IAC3B,CAAC;EACL;EAEQD,gBAAgBA,CAACJ,SAAiB,EAAQ;IAC9C,IAAIN,cAAc,CAACa,QAAQ,CAACP,SAAS,CAAC,KAAK,KAAK,EAAE;MAC9C;IACJ;IACA,MAAM,IAAIQ,cAAW,
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_plugins","reservedFields","AttributePlugin","Plugin","type","entity","_entity","attribute","_attribute","constructor","params","validateReserved","_params","getDefinition","includes","WebinyError","exports"],"sources":["AttributePlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport type { AttributeDefinition } from \"~/toolbox\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\"];\n\nexport interface AttributePluginParams {\n entity: string;\n attribute: string;\n params: AttributeDefinition;\n}\n\nexport abstract class AttributePlugin extends Plugin {\n public static override readonly type: string = \"db.dynamodb.attribute\";\n private readonly _entity: string;\n private readonly _attribute: string;\n private readonly _params: AttributeDefinition;\n\n public get entity(): string {\n return this._entity;\n }\n\n public get attribute(): string {\n return this._attribute;\n }\n\n public constructor({ entity, attribute, params }: AttributePluginParams) {\n super();\n\n this.validateReserved(attribute);\n\n this._entity = entity;\n this._attribute = attribute;\n this._params = params;\n }\n\n public getDefinition(): Record<string, AttributeDefinition> {\n return {\n [this.attribute]: this._params\n };\n }\n\n private validateReserved(attribute: string): void {\n if (reservedFields.includes(attribute) === false) {\n return;\n }\n throw new WebinyError(\n `Attribute name \"${attribute}\" is not allowed.`,\n \"ATTRIBUTE_NOT_ALLOWED\",\n {\n attribute\n }\n );\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;AAQ7C,MAAeC,eAAe,SAASC,eAAM,CAAC;EACjD,OAAgCC,IAAI,GAAW,uBAAuB;EAKtE,IAAWC,MAAMA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACC,OAAO;EACvB;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACC,UAAU;EAC1B;EAEOC,WAAWA,CAAC;IAAEJ,MAAM;IAAEE,SAAS;IAAEG;EAA8B,CAAC,EAAE;IACrE,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,gBAAgB,CAACJ,SAAS,CAAC;IAEhC,IAAI,CAACD,OAAO,GAAGD,MAAM;IACrB,IAAI,CAACG,UAAU,GAAGD,SAAS;IAC3B,IAAI,CAACK,OAAO,GAAGF,MAAM;EACzB;EAEOG,aAAaA,CAAA,EAAwC;IACxD,OAAO;MACH,CAAC,IAAI,CAACN,SAAS,GAAG,IAAI,CAACK;IAC3B,CAAC;EACL;EAEQD,gBAAgBA,CAACJ,SAAiB,EAAQ;IAC9C,IAAIN,cAAc,CAACa,QAAQ,CAACP,SAAS,CAAC,KAAK,KAAK,EAAE;MAC9C;IACJ;IACA,MAAM,IAAIQ,cAAW,CACjB,mBAAmBR,SAAS,mBAAmB,EAC/C,uBAAuB,EACvB;MACIA;IACJ,CACJ,CAAC;EACL;AACJ;AAACS,OAAA,CAAAd,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ValueTransformPluginParams } from "./ValueTransformPlugin";
|
|
2
|
+
import { ValueTransformPlugin } from "./ValueTransformPlugin";
|
|
2
3
|
export declare class DateTimeTransformPlugin extends ValueTransformPlugin {
|
|
3
4
|
constructor(params: Omit<ValueTransformPluginParams, "transform">);
|
|
4
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ValueTransformPlugin","require","_error","_interopRequireDefault","_dateFns","transformDateTime","params","value","undefined","parsedDateTime","parseISO","getTime","isNaN","Date","WebinyError","DateTimeTransformPlugin","ValueTransformPlugin","constructor","transform","exports"],"sources":["DateTimeTransformPlugin.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"names":["_ValueTransformPlugin","require","_error","_interopRequireDefault","_dateFns","transformDateTime","params","value","undefined","parsedDateTime","parseISO","getTime","isNaN","Date","WebinyError","DateTimeTransformPlugin","ValueTransformPlugin","constructor","transform","exports"],"sources":["DateTimeTransformPlugin.ts"],"sourcesContent":["import type {\n ValueTransformPluginParams,\n ValueTransformPluginParamsTransformParams\n} from \"./ValueTransformPlugin\";\nimport { ValueTransformPlugin } from \"./ValueTransformPlugin\";\nimport WebinyError from \"@webiny/error\";\nimport { parseISO } from \"date-fns\";\n\nconst transformDateTime = (params: ValueTransformPluginParamsTransformParams): number | null => {\n const { value } = params;\n if (value === null || value === undefined) {\n return null;\n } else if (typeof value === \"string\") {\n const parsedDateTime = parseISO(value).getTime();\n if (isNaN(parsedDateTime) === false) {\n return parsedDateTime;\n }\n } else if (value instanceof Date || typeof (value as unknown as Date)?.getTime === \"function\") {\n /**\n * In this case we assume this is a date object, and we just get the time.\n */\n return value.getTime();\n }\n\n throw new WebinyError(\"Could not parse given dateTime value.\", \"PARSE_DATE_ERROR\", {\n value\n });\n};\n\nexport class DateTimeTransformPlugin extends ValueTransformPlugin {\n public constructor(params: Omit<ValueTransformPluginParams, \"transform\">) {\n super({\n transform: transformDateTime,\n ...params\n });\n }\n}\n"],"mappings":";;;;;;;AAIA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,MAAMI,iBAAiB,GAAIC,MAAiD,IAAoB;EAC5F,MAAM;IAAEC;EAAM,CAAC,GAAGD,MAAM;EACxB,IAAIC,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,EAAE;IACvC,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAClC,MAAME,cAAc,GAAG,IAAAC,iBAAQ,EAACH,KAAK,CAAC,CAACI,OAAO,CAAC,CAAC;IAChD,IAAIC,KAAK,CAACH,cAAc,CAAC,KAAK,KAAK,EAAE;MACjC,OAAOA,cAAc;IACzB;EACJ,CAAC,MAAM,IAAIF,KAAK,YAAYM,IAAI,IAAI,OAAQN,KAAK,EAAsBI,OAAO,KAAK,UAAU,EAAE;IAC3F;AACR;AACA;IACQ,OAAOJ,KAAK,CAACI,OAAO,CAAC,CAAC;EAC1B;EAEA,MAAM,IAAIG,cAAW,CAAC,uCAAuC,EAAE,kBAAkB,EAAE;IAC/EP;EACJ,CAAC,CAAC;AACN,CAAC;AAEM,MAAMQ,uBAAuB,SAASC,0CAAoB,CAAC;EACvDC,WAAWA,CAACX,MAAqD,EAAE;IACtE,KAAK,CAAC;MACFY,SAAS,EAAEb,iBAAiB;MAC5B,GAAGC;IACP,CAAC,CAAC;EACN;AACJ;AAACa,OAAA,CAAAJ,uBAAA,GAAAA,uBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_plugins","require","_error","_interopRequireDefault","_assignFields","FieldPathPlugin","Plugin","type","constructor","params","_params","fields","assignFields","canCreate","field","includes","createPath","WebinyError","exports"],"sources":["FieldPathPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { assignFields } from \"./assignFields\";\n\nexport interface CreatePath {\n (field: string): string;\n}\nexport interface FieldPathPluginParams {\n /**\n * Which field(s) is this plugin for.\n */\n fields: string | string[];\n /**\n * Create a path for given field.\n * Field is passed because it can be a multi-field plugin.\n */\n createPath: CreatePath;\n}\n\nexport class FieldPathPlugin extends Plugin {\n public static override readonly type: string = \"dynamodb.value.path\";\n private readonly _params: Omit<FieldPathPluginParams, \"fields\"> & { fields: string[] };\n\n public constructor(params: FieldPathPluginParams) {\n super();\n this._params = {\n ...params,\n fields: assignFields(params.fields)\n };\n }\n\n public canCreate(field: string): boolean {\n return this._params.fields.includes(field);\n }\n\n public createPath(field: string): string {\n if (!this._params.createPath) {\n throw new WebinyError(`Missing \"createPath\" in the plugin.`, \"TRANSFORM_ERROR\", {\n fields: this._params.fields\n });\n }\n return this._params.createPath(field);\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAiBO,MAAMI,eAAe,SAASC,eAAM,CAAC;EACxC,OAAgCC,IAAI,GAAW,qBAAqB;EAG7DC,WAAWA,CAACC,MAA6B,EAAE;IAC9C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,GAAG;MACX,GAAGD,MAAM;MACTE,MAAM,EAAE,IAAAC,0BAAY,EAACH,MAAM,CAACE,MAAM;IACtC,CAAC;EACL;EAEOE,SAASA,CAACC,KAAa,EAAW;IACrC,OAAO,IAAI,CAACJ,OAAO,CAACC,MAAM,CAACI,QAAQ,CAACD,KAAK,CAAC;EAC9C;EAEOE,UAAUA,CAACF,KAAa,EAAU;IACrC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACM,UAAU,EAAE;MAC1B,MAAM,IAAIC,cAAW,
|
|
1
|
+
{"version":3,"names":["_plugins","require","_error","_interopRequireDefault","_assignFields","FieldPathPlugin","Plugin","type","constructor","params","_params","fields","assignFields","canCreate","field","includes","createPath","WebinyError","exports"],"sources":["FieldPathPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { assignFields } from \"./assignFields\";\n\nexport interface CreatePath {\n (field: string): string;\n}\nexport interface FieldPathPluginParams {\n /**\n * Which field(s) is this plugin for.\n */\n fields: string | string[];\n /**\n * Create a path for given field.\n * Field is passed because it can be a multi-field plugin.\n */\n createPath: CreatePath;\n}\n\nexport class FieldPathPlugin extends Plugin {\n public static override readonly type: string = \"dynamodb.value.path\";\n private readonly _params: Omit<FieldPathPluginParams, \"fields\"> & { fields: string[] };\n\n public constructor(params: FieldPathPluginParams) {\n super();\n this._params = {\n ...params,\n fields: assignFields(params.fields)\n };\n }\n\n public canCreate(field: string): boolean {\n return this._params.fields.includes(field);\n }\n\n public createPath(field: string): string {\n if (!this._params.createPath) {\n throw new WebinyError(`Missing \"createPath\" in the plugin.`, \"TRANSFORM_ERROR\", {\n fields: this._params.fields\n });\n }\n return this._params.createPath(field);\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAiBO,MAAMI,eAAe,SAASC,eAAM,CAAC;EACxC,OAAgCC,IAAI,GAAW,qBAAqB;EAG7DC,WAAWA,CAACC,MAA6B,EAAE;IAC9C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,GAAG;MACX,GAAGD,MAAM;MACTE,MAAM,EAAE,IAAAC,0BAAY,EAACH,MAAM,CAACE,MAAM;IACtC,CAAC;EACL;EAEOE,SAASA,CAACC,KAAa,EAAW;IACrC,OAAO,IAAI,CAACJ,OAAO,CAACC,MAAM,CAACI,QAAQ,CAACD,KAAK,CAAC;EAC9C;EAEOE,UAAUA,CAACF,KAAa,EAAU;IACrC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACM,UAAU,EAAE;MAC1B,MAAM,IAAIC,cAAW,CAAC,qCAAqC,EAAE,iBAAiB,EAAE;QAC5EN,MAAM,EAAE,IAAI,CAACD,OAAO,CAACC;MACzB,CAAC,CAAC;IACN;IACA,OAAO,IAAI,CAACD,OAAO,CAACM,UAAU,CAACF,KAAK,CAAC;EACzC;AACJ;AAACI,OAAA,CAAAb,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Plugin } from "@webiny/plugins";
|
|
2
|
-
import { DynamoDBTypes } from "../../toolbox";
|
|
3
|
-
export
|
|
2
|
+
import type { DynamoDBTypes } from "../../toolbox";
|
|
3
|
+
export type FieldType = DynamoDBTypes & "date" & any;
|
|
4
4
|
export interface TransformValueCb {
|
|
5
5
|
(value: any): any;
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_plugins","require","FieldPlugin","Plugin","constructor","params","fieldType","type","dynamoDbType","field","path","sortable","undefined","_transformValue","transformValue","getPath","getType","getField","getDynamoDbType","value","Number","Date","isSortable","exports"],"sources":["FieldPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { DynamoDBTypes } from \"~/toolbox\";\n\nexport type FieldType = DynamoDBTypes & \"date\" & any;\n\nexport interface TransformValueCb {\n (value: any): any;\n}\n\nexport interface FieldPluginParams {\n /**\n * Default is string.\n */\n type?: FieldType;\n field: string;\n path?: string;\n /**\n * Default is true.\n */\n sortable?: boolean;\n\n transformValue?: TransformValueCb;\n}\n\nexport abstract class FieldPlugin extends Plugin {\n private readonly path?: string;\n private readonly field: string;\n private readonly fieldType: FieldType;\n private readonly dynamoDbType: DynamoDBTypes;\n private readonly sortable: boolean;\n private readonly _transformValue: TransformValueCb | undefined;\n\n public constructor(params: FieldPluginParams) {\n super();\n this.fieldType = params.type || \"string\";\n this.dynamoDbType = params.type === \"date\" ? \"string\" : params.type;\n this.field = params.field;\n this.path = params.path;\n this.sortable = params.sortable === undefined ? true : params.sortable;\n this._transformValue = params.transformValue;\n }\n\n public getPath(): string {\n return this.path || this.field;\n }\n\n public getType(): FieldType {\n return this.fieldType;\n }\n\n public getField(): string {\n return this.field;\n }\n\n public getDynamoDbType(): string {\n return this.dynamoDbType;\n }\n\n public transformValue(value: any): any {\n if (this._transformValue) {\n return this.transformValue(value);\n }\n switch (this.fieldType) {\n case \"number\":\n return Number(value);\n case \"date\":\n if (!value) {\n return null;\n }\n return new Date(value);\n }\n return value;\n }\n\n public isSortable(): boolean {\n return this.sortable;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAwBO,MAAeC,WAAW,SAASC,eAAM,CAAC;EAQtCC,WAAWA,CAACC,MAAyB,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,SAAS,GAAGD,MAAM,CAACE,IAAI,IAAI,QAAQ;IACxC,IAAI,CAACC,YAAY,GAAGH,MAAM,CAACE,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAGF,MAAM,CAACE,IAAI;IACnE,IAAI,CAACE,KAAK,GAAGJ,MAAM,CAACI,KAAK;IACzB,IAAI,CAACC,IAAI,GAAGL,MAAM,CAACK,IAAI;IACvB,IAAI,CAACC,QAAQ,GAAGN,MAAM,CAACM,QAAQ,KAAKC,SAAS,GAAG,IAAI,GAAGP,MAAM,CAACM,QAAQ;IACtE,IAAI,CAACE,eAAe,GAAGR,MAAM,CAACS,cAAc;EAChD;EAEOC,OAAOA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACL,IAAI,IAAI,IAAI,CAACD,KAAK;EAClC;EAEOO,OAAOA,CAAA,EAAc;IACxB,OAAO,IAAI,CAACV,SAAS;EACzB;EAEOW,QAAQA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACR,KAAK;EACrB;EAEOS,eAAeA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACV,YAAY;EAC5B;EAEOM,cAAcA,CAACK,KAAU,EAAO;IACnC,IAAI,IAAI,CAACN,eAAe,EAAE;MACtB,OAAO,IAAI,CAACC,cAAc,CAACK,KAAK,CAAC;IACrC;IACA,QAAQ,IAAI,CAACb,SAAS;MAClB,KAAK,QAAQ;QACT,OAAOc,MAAM,CAACD,KAAK,CAAC;MACxB,KAAK,MAAM;QACP,IAAI,CAACA,KAAK,EAAE;UACR,OAAO,IAAI;QACf;QACA,OAAO,IAAIE,IAAI,CAACF,KAAK,CAAC;IAC9B;IACA,OAAOA,KAAK;EAChB;EAEOG,UAAUA,CAAA,EAAY;IACzB,OAAO,IAAI,CAACX,QAAQ;EACxB;AACJ;AAACY,OAAA,CAAArB,WAAA,GAAAA,WAAA"}
|
|
1
|
+
{"version":3,"names":["_plugins","require","FieldPlugin","Plugin","constructor","params","fieldType","type","dynamoDbType","field","path","sortable","undefined","_transformValue","transformValue","getPath","getType","getField","getDynamoDbType","value","Number","Date","isSortable","exports"],"sources":["FieldPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { DynamoDBTypes } from \"~/toolbox\";\n\nexport type FieldType = DynamoDBTypes & \"date\" & any;\n\nexport interface TransformValueCb {\n (value: any): any;\n}\n\nexport interface FieldPluginParams {\n /**\n * Default is string.\n */\n type?: FieldType;\n field: string;\n path?: string;\n /**\n * Default is true.\n */\n sortable?: boolean;\n\n transformValue?: TransformValueCb;\n}\n\nexport abstract class FieldPlugin extends Plugin {\n private readonly path?: string;\n private readonly field: string;\n private readonly fieldType: FieldType;\n private readonly dynamoDbType: DynamoDBTypes;\n private readonly sortable: boolean;\n private readonly _transformValue: TransformValueCb | undefined;\n\n public constructor(params: FieldPluginParams) {\n super();\n this.fieldType = params.type || \"string\";\n this.dynamoDbType = params.type === \"date\" ? \"string\" : params.type;\n this.field = params.field;\n this.path = params.path;\n this.sortable = params.sortable === undefined ? true : params.sortable;\n this._transformValue = params.transformValue;\n }\n\n public getPath(): string {\n return this.path || this.field;\n }\n\n public getType(): FieldType {\n return this.fieldType;\n }\n\n public getField(): string {\n return this.field;\n }\n\n public getDynamoDbType(): string {\n return this.dynamoDbType;\n }\n\n public transformValue(value: any): any {\n if (this._transformValue) {\n return this.transformValue(value);\n }\n switch (this.fieldType) {\n case \"number\":\n return Number(value);\n case \"date\":\n if (!value) {\n return null;\n }\n return new Date(value);\n }\n return value;\n }\n\n public isSortable(): boolean {\n return this.sortable;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAwBO,MAAeC,WAAW,SAASC,eAAM,CAAC;EAQtCC,WAAWA,CAACC,MAAyB,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,SAAS,GAAGD,MAAM,CAACE,IAAI,IAAI,QAAQ;IACxC,IAAI,CAACC,YAAY,GAAGH,MAAM,CAACE,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAGF,MAAM,CAACE,IAAI;IACnE,IAAI,CAACE,KAAK,GAAGJ,MAAM,CAACI,KAAK;IACzB,IAAI,CAACC,IAAI,GAAGL,MAAM,CAACK,IAAI;IACvB,IAAI,CAACC,QAAQ,GAAGN,MAAM,CAACM,QAAQ,KAAKC,SAAS,GAAG,IAAI,GAAGP,MAAM,CAACM,QAAQ;IACtE,IAAI,CAACE,eAAe,GAAGR,MAAM,CAACS,cAAc;EAChD;EAEOC,OAAOA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACL,IAAI,IAAI,IAAI,CAACD,KAAK;EAClC;EAEOO,OAAOA,CAAA,EAAc;IACxB,OAAO,IAAI,CAACV,SAAS;EACzB;EAEOW,QAAQA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACR,KAAK;EACrB;EAEOS,eAAeA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACV,YAAY;EAC5B;EAEOM,cAAcA,CAACK,KAAU,EAAO;IACnC,IAAI,IAAI,CAACN,eAAe,EAAE;MACtB,OAAO,IAAI,CAACC,cAAc,CAACK,KAAK,CAAC;IACrC;IACA,QAAQ,IAAI,CAACb,SAAS;MAClB,KAAK,QAAQ;QACT,OAAOc,MAAM,CAACD,KAAK,CAAC;MACxB,KAAK,MAAM;QACP,IAAI,CAACA,KAAK,EAAE;UACR,OAAO,IAAI;QACf;QACA,OAAO,IAAIE,IAAI,CAACF,KAAK,CAAC;IAC9B;IACA,OAAOA,KAAK;EAChB;EAEOG,UAAUA,CAAA,EAAY;IACzB,OAAO,IAAI,CAACX,QAAQ;EACxB;AACJ;AAACY,OAAA,CAAArB,WAAA,GAAAA,WAAA","ignoreList":[]}
|