datastore-api 2.0.0 → 2.2.0

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.
@@ -1,377 +0,0 @@
1
- "use strict";
2
- /*
3
- * dstore-api.test.ts
4
- *
5
- * Created by Dr. Maximilian Dornseif 2021-12-10 in huwawi3backend 11.10.0
6
- * Copyright (c) 2021 Dr. Maximilian Dornseif
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const datastore_1 = require("@google-cloud/datastore");
13
- const ava_1 = __importDefault(require("ava"));
14
- const google_datastore_emulator_1 = __importDefault(require("google-datastore-emulator"));
15
- const dstore_api_1 = require("./dstore-api");
16
- process.env.GCLOUD_PROJECT = 'project-id'; // Set the datastore project Id globally
17
- let emulator;
18
- ava_1.default.before(async (_t) => {
19
- emulator = new google_datastore_emulator_1.default({ debug: false });
20
- await emulator.start();
21
- });
22
- ava_1.default.after('cleanup', async (_t) => {
23
- await emulator.stop();
24
- });
25
- function getDstore(projectId) {
26
- return new dstore_api_1.Dstore(new datastore_1.Datastore({ projectId }));
27
- }
28
- (0, ava_1.default)('keySerialize', async (t) => {
29
- const kvStore = getDstore('test');
30
- t.deepEqual(kvStore.key(['testYodel', 123]).path, ['testYodel', 123]);
31
- t.deepEqual(JSON.parse(JSON.stringify(kvStore.key(['testYodel', 123]))), {
32
- id: 123,
33
- kind: 'testYodel',
34
- path: ['testYodel', 123],
35
- });
36
- const ser = kvStore.keySerialize(kvStore.key(['testYodel', 123]));
37
- t.deepEqual(ser, 'agByDwsSCXRlc3RZb2RlbBh7DA');
38
- t.deepEqual(JSON.parse(JSON.stringify(kvStore.keyFromSerialized(ser))), {
39
- id: '123',
40
- kind: 'testYodel',
41
- path: ['testYodel', '123'],
42
- });
43
- });
44
- (0, ava_1.default)('allocation', async (t) => {
45
- const kvStore = getDstore('test');
46
- const id = await kvStore.allocateOneId();
47
- t.regex(id, /\d+/);
48
- });
49
- // describe("Read", () => {
50
- // it("get num_id", async () => {
51
- // expect.assertions(10);
52
- // const kvStore = getDstore("test");
53
- // const entity = { key: kvStore.key(["testYodel", 2]), data: { foo: "bar" } };
54
- // const entity2 = { key: kvStore.key(["testYodel", 3]), data: { foo: "bar" } };
55
- // const commitResponse = await kvStore.save([entity, entity2]);
56
- // expect(isNumber(commitResponse?.[0]?.indexUpdates)).toBeTruthy();
57
- // // expect(commitResponse).toMatchInlineSnapshot(`
58
- // // Array [
59
- // // Object {
60
- // // "indexUpdates": 0,
61
- // // "mutationResults": Array [
62
- // // Object {
63
- // // "conflictDetected": false,
64
- // // "key": null,
65
- // // "version": "1234567890123456",
66
- // // },
67
- // // ],
68
- // // },
69
- // // ]
70
- // // `);
71
- // expect(entity).toMatchInlineSnapshot(`
72
- // Object {
73
- // "data": Object {
74
- // "foo": "bar",
75
- // },
76
- // "key": Key {
77
- // "id": 2,
78
- // "kind": "testYodel",
79
- // "namespace": "test",
80
- // "path": Array [
81
- // "testYodel",
82
- // 2,
83
- // ],
84
- // },
85
- // }
86
- // `);
87
- // const result = await kvStore.get(entity.key);
88
- // // get returns a single Entity
89
- // expect(Array.isArray(result)).toBeFalsy();
90
- // expect(result).toMatchInlineSnapshot(`
91
- // Object {
92
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAgyiAQR0ZXN0",
93
- // "foo": "bar",
94
- // Symbol(KEY): Key {
95
- // "id": "2",
96
- // "kind": "testYodel",
97
- // "namespace": "test",
98
- // "path": Array [
99
- // "testYodel",
100
- // "2",
101
- // ],
102
- // },
103
- // }
104
- // `);
105
- // assertIsObject(result);
106
- // expect(kvStore.readKey(result)).toBeInstanceOf(Key);
107
- // const result2 = await kvStore.getMulti([entity.key]);
108
- // // getMulti returns a Array even for single keys
109
- // expect(result2).toMatchInlineSnapshot(`
110
- // Array [
111
- // Object {
112
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAgyiAQR0ZXN0",
113
- // "foo": "bar",
114
- // Symbol(KEY): Key {
115
- // "id": "2",
116
- // "kind": "testYodel",
117
- // "namespace": "test",
118
- // "path": Array [
119
- // "testYodel",
120
- // "2",
121
- // ],
122
- // },
123
- // },
124
- // ]
125
- // `);
126
- // const result3 = await kvStore.getMulti([entity.key, kvStore.key(["testYodel", 3])]);
127
- // // getMulti returns a Array with multiple keys
128
- // // expect(Array.isArray(result)).toBeTruthy();
129
- // expect(result3).toMatchInlineSnapshot(`
130
- // Array [
131
- // Object {
132
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAgyiAQR0ZXN0",
133
- // "foo": "bar",
134
- // Symbol(KEY): Key {
135
- // "id": "2",
136
- // "kind": "testYodel",
137
- // "namespace": "test",
138
- // "path": Array [
139
- // "testYodel",
140
- // "2",
141
- // ],
142
- // },
143
- // },
144
- // Object {
145
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAwyiAQR0ZXN0",
146
- // "foo": "bar",
147
- // Symbol(KEY): Key {
148
- // "id": "3",
149
- // "kind": "testYodel",
150
- // "namespace": "test",
151
- // "path": Array [
152
- // "testYodel",
153
- // "3",
154
- // ],
155
- // },
156
- // },
157
- // ]
158
- // `);
159
- // const result4 = await kvStore.getMulti([entity.key, entity.key]);
160
- // // getMulti returns a Array but collapses duplicate keys
161
- // // expect(Array.isArray(result)).toBeTruthy();
162
- // // Firestore in Datastore returns the entity once
163
- // // Datastore Emulator returns the Entity twice
164
- // // kvStore should normalize that.
165
- // expect(result4).toMatchInlineSnapshot(`
166
- // Array [
167
- // Object {
168
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAgyiAQR0ZXN0",
169
- // "foo": "bar",
170
- // Symbol(KEY): Key {
171
- // "id": "2",
172
- // "kind": "testYodel",
173
- // "namespace": "test",
174
- // "path": Array [
175
- // "testYodel",
176
- // "2",
177
- // ],
178
- // },
179
- // },
180
- // Object {
181
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAgyiAQR0ZXN0",
182
- // "foo": "bar",
183
- // Symbol(KEY): Key {
184
- // "id": "2",
185
- // "kind": "testYodel",
186
- // "namespace": "test",
187
- // "path": Array [
188
- // "testYodel",
189
- // "2",
190
- // ],
191
- // },
192
- // },
193
- // ]
194
- // `);
195
- // const result5 = await kvStore.getMulti([entity.key, kvStore.key(["YodelNotThere", 3])]);
196
- // // getMulti returns a Array but omits unknown keys
197
- // // expect(Array.isArray(result)).toBeTruthy();
198
- // expect(result5).toMatchInlineSnapshot(`
199
- // Array [
200
- // Object {
201
- // "_keyStr": "agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYAgyiAQR0ZXN0",
202
- // "foo": "bar",
203
- // Symbol(KEY): Key {
204
- // "id": "2",
205
- // "kind": "testYodel",
206
- // "namespace": "test",
207
- // "path": Array [
208
- // "testYodel",
209
- // "2",
210
- // ],
211
- // },
212
- // },
213
- // ]
214
- // `);
215
- // const result6 = await kvStore.getMulti([]);
216
- // // getMulti returns a empty Array for an empty array
217
- // // expect(Array.isArray(result)).toBeTruthy();
218
- // expect(result6).toMatchInlineSnapshot(`Array []`);
219
- // });
220
- (0, ava_1.default)('get name', async (t) => {
221
- const kvStore = getDstore('test');
222
- const entity = {
223
- key: kvStore.key(['testYodel', 'two']),
224
- data: { foo: 'bar' },
225
- };
226
- await kvStore.save([entity]);
227
- const result = await kvStore.get(entity.key);
228
- t.is(result === null || result === void 0 ? void 0 : result._keyStr, 'agByEgsSCXRlc3RZb2RlbCIDdHdvDA');
229
- t.is(result === null || result === void 0 ? void 0 : result.foo, 'bar');
230
- });
231
- (0, ava_1.default)('query', async (t) => {
232
- var _a, _b, _c;
233
- const kvStore = getDstore('test');
234
- const entity = {
235
- key: kvStore.key(['testYodel', '3']),
236
- data: { foo: 'bar', baz: 'baz' },
237
- };
238
- await kvStore.save([entity]);
239
- const query = kvStore.createQuery('testYodel');
240
- query.limit(1);
241
- const [entities, runQueryInfo] = await kvStore.runQuery(query);
242
- t.is(entities.length, 1);
243
- t.is((_a = entities === null || entities === void 0 ? void 0 : entities[0]) === null || _a === void 0 ? void 0 : _a.foo, 'bar');
244
- t.is((_c = (_b = entities === null || entities === void 0 ? void 0 : entities[0]) === null || _b === void 0 ? void 0 : _b[datastore_1.Datastore.KEY]) === null || _c === void 0 ? void 0 : _c.kind, 'testYodel');
245
- t.is(runQueryInfo === null || runQueryInfo === void 0 ? void 0 : runQueryInfo.moreResults, 'MORE_RESULTS_AFTER_LIMIT');
246
- // modern interface
247
- const [result2] = await kvStore.query('testYodel', [], 1, [], ['baz']);
248
- t.is(result2.length, 1);
249
- // foo is removed by selection
250
- t.deepEqual(JSON.parse(JSON.stringify(result2 === null || result2 === void 0 ? void 0 : result2[0])), {
251
- _keyStr: 'agByEAsSCXRlc3RZb2RlbCIBMww',
252
- baz: 'baz',
253
- });
254
- const key = kvStore.readKey(result2 === null || result2 === void 0 ? void 0 : result2[0]);
255
- t.is(key.id, entity.key.id);
256
- });
257
- (0, ava_1.default)('set', async (t) => {
258
- // expect.assertions(2);
259
- const kvStore = getDstore('test');
260
- const result = await kvStore.set(kvStore.key(['testYodel', '5e7']), {
261
- foo: 'bar',
262
- });
263
- t.deepEqual(result.name, '5e7');
264
- t.deepEqual(result.kind, 'testYodel');
265
- // autogenerate key
266
- const result2 = await kvStore.set(kvStore.key(['testYodel']), { foo: 'bar' });
267
- t.deepEqual(result2.kind, 'testYodel');
268
- });
269
- (0, ava_1.default)('save / upsert', async (t) => {
270
- var _a, _b, _c;
271
- // expect.assertions(2);
272
- const kvStore = getDstore('test');
273
- const entity = {
274
- key: kvStore.key(['testYodel', 3]),
275
- data: { foo: 'bar' },
276
- };
277
- const result = await kvStore.save([entity]);
278
- // const result2 = await kvStore.upsert([entity]);
279
- t.is((_c = (_b = (_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a.mutationResults) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.conflictDetected, false);
280
- t.deepEqual(entity.data._keyStr, 'agByDwsSCXRlc3RZb2RlbBgDDA');
281
- t.deepEqual(entity.data.foo, 'bar');
282
- t.deepEqual(entity.data[datastore_1.Datastore.KEY].kind, 'testYodel');
283
- });
284
- (0, ava_1.default)('update', async (t) => {
285
- var _a, _b, _c, _d, _e, _f, _g;
286
- // expect.assertions(3);
287
- const kvStore = getDstore('test');
288
- const keyName = `4insert${Math.random()}`;
289
- const entity = {
290
- key: kvStore.key(['testYodel', keyName]),
291
- data: { foo: 'bar' },
292
- };
293
- // const request = kvStore.update([entity]);
294
- // await expect(request).rejects.toThrowError(Error);
295
- await kvStore.save([entity]);
296
- const result = await kvStore.update([entity]);
297
- t.is((_c = (_b = (_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a.mutationResults) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.conflictDetected, false);
298
- t.is((_f = (_e = (_d = result === null || result === void 0 ? void 0 : result[0]) === null || _d === void 0 ? void 0 : _d.mutationResults) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.key, null);
299
- t.is((_g = result === null || result === void 0 ? void 0 : result[0]) === null || _g === void 0 ? void 0 : _g.indexUpdates, 2);
300
- });
301
- (0, ava_1.default)('insert / delete', async (t) => {
302
- var _a, _b, _c, _d, _e, _f, _g;
303
- // expect.assertions(2);
304
- const kvStore = getDstore('test');
305
- const entity = {
306
- key: kvStore.key(['testYodel', 4]),
307
- data: { foo: 'bar' },
308
- };
309
- const result = await kvStore.insert([entity]);
310
- t.is((_c = (_b = (_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a.mutationResults) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.conflictDetected, false);
311
- t.is((_d = result === null || result === void 0 ? void 0 : result[0]) === null || _d === void 0 ? void 0 : _d.indexUpdates, 3);
312
- // t.is(result?.[0]?.mutationResults?.[0]?.version, '4'); sometimes 4 sometimes 5, sometimes 3
313
- t.deepEqual(entity.data.foo, 'bar');
314
- t.deepEqual(entity.key.path, ['testYodel', 4]);
315
- const result2 = await kvStore.delete([entity.key]);
316
- t.is((_g = (_f = (_e = result2 === null || result2 === void 0 ? void 0 : result2[0]) === null || _e === void 0 ? void 0 : _e.mutationResults) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.conflictDetected, false);
317
- });
318
- (0, ava_1.default)('exception', async (t) => {
319
- // expect.assertions(2);
320
- const kvStore = getDstore('test');
321
- try {
322
- const result = await kvStore.set(kvStore.key(['testYodel', NaN]), {
323
- foo: 'bar',
324
- });
325
- }
326
- catch (e) {
327
- t.regex(e.stack, /Dstore\.set/);
328
- }
329
- });
330
- // describe("Transactions", () => {
331
- // it("simple", async () => {
332
- // expect.assertions(2);
333
- // const kvStore = getDstore("huwawi3Datastore");
334
- // const outerResult = await kvStore.runInTransaction<any>(async () => {
335
- // // write inside the transaction
336
- // const entity = { key: kvStore.key(["testYodel", 6]), data: { foo: "foobar" } };
337
- // const innerResult = await kvStore.save([entity]);
338
- // // save does not return anything within transactions
339
- // expect(innerResult).toMatchInlineSnapshot(`undefined`);
340
- // return 123;
341
- // });
342
- // expect(outerResult).toMatchInlineSnapshot(`123`);
343
- // // this fails in the Datastore Emulator
344
- // const entitiey = await kvStore.get(kvStore.key(["testYodel", 6]));
345
- // // expect(entitiey).toMatchInlineSnapshot(`
346
- // // Object {
347
- // // "foo": "foobar",
348
- // // Symbol(KEY): Key {
349
- // // "id": "6",
350
- // // "kind": "testYodel",
351
- // // "namespace": "test",
352
- // // "path": Array [
353
- // // "testYodel",
354
- // // "6",
355
- // // ],
356
- // // },
357
- // // }
358
- // // `);
359
- // });
360
- // it("throws", async () => {
361
- // expect.assertions(1);
362
- // const kvStore = getDstore("huwawi3Datastore");
363
- // const request = kvStore.runInTransaction<any>(async () => {
364
- // throw new DstoreError("TestError", undefined);
365
- // });
366
- // await expect(request).rejects.toThrowError(DstoreError);
367
- // });
368
- // });
369
- // describe('Exceptions', () => {
370
- // it('simple', async () => {
371
- // const t = () => {
372
- // throw new DstoreError('bla', undefined);
373
- // };
374
- // expect(t).toThrow(DstoreError);
375
- // });
376
- // });
377
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHN0b3JlLWFwaS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kc3RvcmUtYXBpLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7OztBQUVILHVEQUFvRDtBQUNwRCw4Q0FBdUI7QUFDdkIsMEZBQWlEO0FBRWpELDZDQUFzQztBQUV0QyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsQ0FBQyx3Q0FBd0M7QUFDbkYsSUFBSSxRQUFRLENBQUM7QUFFYixhQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN2QixRQUFRLEdBQUcsSUFBSSxtQ0FBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUM7QUFFSCxhQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDakMsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLFNBQVMsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sSUFBSSxtQkFBTSxDQUFDLElBQUkscUJBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsSUFBQSxhQUFJLEVBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFD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
@@ -1 +0,0 @@
1
- export * from './lib/dstore-api';
@@ -1,2 +0,0 @@
1
- export * from './lib/dstore-api';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyJ9