@kwiz/node 1.0.19 → 1.0.21
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/get-with-cache.d.ts
CHANGED
|
@@ -3,6 +3,15 @@ import { IOdataFilterStatement } from "./odata";
|
|
|
3
3
|
export declare function ConfigureTableStorage(config: {
|
|
4
4
|
connectionString: string;
|
|
5
5
|
}): void;
|
|
6
|
+
type operationResult<T = never> = {
|
|
7
|
+
success: true;
|
|
8
|
+
result?: T;
|
|
9
|
+
errorCode?: string;
|
|
10
|
+
} | {
|
|
11
|
+
success: false;
|
|
12
|
+
result?: T;
|
|
13
|
+
errorCode: string;
|
|
14
|
+
};
|
|
6
15
|
type TableEntityBase = {
|
|
7
16
|
/**
|
|
8
17
|
* The PartitionKey property of the entity.
|
|
@@ -17,19 +26,19 @@ type TableEntityBase = {
|
|
|
17
26
|
export type TableEntityType<DataType extends TableEntityBase> = {
|
|
18
27
|
[P in keyof DataType]: string | boolean | Date | number;
|
|
19
28
|
};
|
|
20
|
-
export declare function findTable(tableName: string): Promise<
|
|
29
|
+
export declare function findTable(tableName: string): Promise<operationResult>;
|
|
21
30
|
export declare function listTables(): Promise<string[]>;
|
|
22
|
-
export declare function ensureTable(tableName: string): Promise<
|
|
23
|
-
export declare function deleteTable(tableName: string): Promise<
|
|
31
|
+
export declare function ensureTable(tableName: string): Promise<operationResult>;
|
|
32
|
+
export declare function deleteTable(tableName: string): Promise<operationResult>;
|
|
24
33
|
export declare function getItems<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, options?: {
|
|
25
34
|
filterStatment?: IOdataFilterStatement<DataType>;
|
|
26
35
|
postFilter?: (item: DataType) => boolean;
|
|
27
|
-
}): Promise<DataType[]
|
|
28
|
-
export declare function addItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType): Promise<
|
|
29
|
-
export declare function deleteItem(tableName: string, partitionKey: string, rowKey: string): Promise<
|
|
36
|
+
}): Promise<operationResult<DataType[]>>;
|
|
37
|
+
export declare function addItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType): Promise<operationResult>;
|
|
38
|
+
export declare function deleteItem(tableName: string, partitionKey: string, rowKey: string): Promise<operationResult>;
|
|
30
39
|
export declare function upsertItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType, options?: {
|
|
31
40
|
mode?: UpdateMode;
|
|
32
|
-
}): Promise<
|
|
41
|
+
}): Promise<operationResult>;
|
|
33
42
|
export declare class Table<KeysType extends TableEntityBase, GetKeysParam, SavedRow extends KeysType & TableEntityType<SavedRow>, ParsedRow = SavedRow> {
|
|
34
43
|
private tableName;
|
|
35
44
|
private transform;
|
|
@@ -42,17 +51,25 @@ export declare class Table<KeysType extends TableEntityBase, GetKeysParam, Saved
|
|
|
42
51
|
load: (saved: SavedRow, table: Table<KeysType, GetKeysParam, SavedRow, ParsedRow>) => ParsedRow;
|
|
43
52
|
};
|
|
44
53
|
});
|
|
45
|
-
delete(): Promise<
|
|
46
|
-
ensure(): Promise<
|
|
54
|
+
delete(): Promise<operationResult<never>>;
|
|
55
|
+
ensure(): Promise<operationResult<never>>;
|
|
47
56
|
getItems(options?: {
|
|
48
57
|
filterStatment?: IOdataFilterStatement<SavedRow>;
|
|
49
58
|
postFilter?: (item: SavedRow) => boolean;
|
|
50
|
-
}): Promise<
|
|
51
|
-
|
|
59
|
+
}): Promise<{
|
|
60
|
+
result: ParsedRow[];
|
|
61
|
+
success: true;
|
|
62
|
+
errorCode?: string;
|
|
63
|
+
} | {
|
|
64
|
+
result: ParsedRow[];
|
|
65
|
+
success: false;
|
|
66
|
+
errorCode: string;
|
|
67
|
+
}>;
|
|
68
|
+
addItem(item: ParsedRow): Promise<operationResult<never>>;
|
|
52
69
|
upsertItem(item: ParsedRow, options?: {
|
|
53
70
|
mode?: UpdateMode;
|
|
54
|
-
}): Promise<
|
|
55
|
-
deleteItemByKey(param: GetKeysParam): Promise<
|
|
56
|
-
deleteItem(item: KeysType): Promise<
|
|
71
|
+
}): Promise<operationResult<never>>;
|
|
72
|
+
deleteItemByKey(param: GetKeysParam): Promise<operationResult<never>>;
|
|
73
|
+
deleteItem(item: KeysType): Promise<operationResult<never>>;
|
|
57
74
|
}
|
|
58
75
|
export {};
|
|
@@ -39,7 +39,7 @@ function findTable(tableName) {
|
|
|
39
39
|
var _a, e_1, _b, _c;
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
41
|
const tableService = getTableService();
|
|
42
|
-
let
|
|
42
|
+
let success = false;
|
|
43
43
|
try {
|
|
44
44
|
const tables = tableService.listTables({
|
|
45
45
|
queryOptions: {
|
|
@@ -52,7 +52,7 @@ function findTable(tableName) {
|
|
|
52
52
|
_c = tables_1_1.value;
|
|
53
53
|
_d = false;
|
|
54
54
|
const table = _c;
|
|
55
|
-
|
|
55
|
+
success = true;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -66,7 +66,7 @@ function findTable(tableName) {
|
|
|
66
66
|
catch (e) {
|
|
67
67
|
//console.log(e);
|
|
68
68
|
}
|
|
69
|
-
return found;
|
|
69
|
+
return { success, errorCode: success ? undefined : "Not found" };
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
exports.findTable = findTable;
|
|
@@ -123,19 +123,23 @@ function ensureTable(tableName) {
|
|
|
123
123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
124
124
|
const table = getTableClient(tableName);
|
|
125
125
|
let success = false;
|
|
126
|
+
let errorCode;
|
|
126
127
|
try {
|
|
127
128
|
yield table.createTable({
|
|
128
129
|
onResponse: raw => {
|
|
129
130
|
let error = isError(raw);
|
|
130
|
-
success = error.isError !== true || error.
|
|
131
|
-
|
|
131
|
+
success = error.isError !== true || error.errorCode === "TableAlreadyExists";
|
|
132
|
+
if (error.isError) {
|
|
133
|
+
console.error(error.errorCode);
|
|
134
|
+
errorCode = error.errorCode;
|
|
135
|
+
}
|
|
132
136
|
}
|
|
133
137
|
});
|
|
134
138
|
}
|
|
135
139
|
catch (e) {
|
|
136
140
|
//console.error(e);
|
|
137
141
|
}
|
|
138
|
-
return success;
|
|
142
|
+
return { success, errorCode };
|
|
139
143
|
});
|
|
140
144
|
}
|
|
141
145
|
exports.ensureTable = ensureTable;
|
|
@@ -143,19 +147,23 @@ function deleteTable(tableName) {
|
|
|
143
147
|
return __awaiter(this, void 0, void 0, function* () {
|
|
144
148
|
const table = getTableClient(tableName);
|
|
145
149
|
let success = false;
|
|
150
|
+
let errorCode;
|
|
146
151
|
try {
|
|
147
152
|
yield table.deleteTable({
|
|
148
153
|
onResponse: raw => {
|
|
149
154
|
let error = isError(raw);
|
|
150
155
|
success = error.isError !== true;
|
|
151
|
-
|
|
156
|
+
if (error.isError) {
|
|
157
|
+
console.error(error.errorCode);
|
|
158
|
+
errorCode = error.errorCode;
|
|
159
|
+
}
|
|
152
160
|
}
|
|
153
161
|
});
|
|
154
162
|
}
|
|
155
163
|
catch (e) {
|
|
156
164
|
//console.log(e);
|
|
157
165
|
}
|
|
158
|
-
return success;
|
|
166
|
+
return { success, errorCode };
|
|
159
167
|
});
|
|
160
168
|
}
|
|
161
169
|
exports.deleteTable = deleteTable;
|
|
@@ -164,6 +172,8 @@ function getItems(tableName, options) {
|
|
|
164
172
|
var _a, e_3, _b, _c;
|
|
165
173
|
return __awaiter(this, void 0, void 0, function* () {
|
|
166
174
|
const table = getTableClient(tableName);
|
|
175
|
+
let success = true;
|
|
176
|
+
let errorCode;
|
|
167
177
|
let result = [];
|
|
168
178
|
try {
|
|
169
179
|
let o;
|
|
@@ -199,8 +209,10 @@ function getItems(tableName, options) {
|
|
|
199
209
|
}
|
|
200
210
|
catch (e) {
|
|
201
211
|
//console.log(e);
|
|
212
|
+
success = false;
|
|
213
|
+
errorCode = "Could not get items";
|
|
202
214
|
}
|
|
203
|
-
return result;
|
|
215
|
+
return { success, errorCode, result };
|
|
204
216
|
});
|
|
205
217
|
}
|
|
206
218
|
exports.getItems = getItems;
|
|
@@ -208,12 +220,16 @@ function addItem(tableName, item) {
|
|
|
208
220
|
return __awaiter(this, void 0, void 0, function* () {
|
|
209
221
|
const table = getTableClient(tableName);
|
|
210
222
|
let success = false;
|
|
223
|
+
let errorCode;
|
|
211
224
|
try {
|
|
212
225
|
let result = yield table.createEntity(item, {
|
|
213
226
|
onResponse: raw => {
|
|
214
227
|
let error = isError(raw);
|
|
215
228
|
success = error.isError !== true;
|
|
216
|
-
|
|
229
|
+
if (error.isError) {
|
|
230
|
+
console.error(error.errorCode);
|
|
231
|
+
errorCode = error.errorCode;
|
|
232
|
+
}
|
|
217
233
|
}
|
|
218
234
|
});
|
|
219
235
|
//console.log(result);
|
|
@@ -222,7 +238,7 @@ function addItem(tableName, item) {
|
|
|
222
238
|
catch (e) {
|
|
223
239
|
success = false;
|
|
224
240
|
}
|
|
225
|
-
return success;
|
|
241
|
+
return { success, errorCode };
|
|
226
242
|
});
|
|
227
243
|
}
|
|
228
244
|
exports.addItem = addItem;
|
|
@@ -230,11 +246,17 @@ function deleteItem(tableName, partitionKey, rowKey) {
|
|
|
230
246
|
return __awaiter(this, void 0, void 0, function* () {
|
|
231
247
|
const table = getTableClient(tableName);
|
|
232
248
|
let success = false;
|
|
249
|
+
let errorCode;
|
|
233
250
|
try {
|
|
234
251
|
let result = yield table.deleteEntity(partitionKey, rowKey, {
|
|
235
252
|
onResponse: raw => {
|
|
236
253
|
let error = isError(raw);
|
|
237
|
-
|
|
254
|
+
//error not found is still a success for delete action
|
|
255
|
+
success = error.isError !== true || error.errorCode === "ResourceNotFound";
|
|
256
|
+
if (error.isError) {
|
|
257
|
+
console.error(error.errorCode);
|
|
258
|
+
errorCode = error.errorCode;
|
|
259
|
+
}
|
|
238
260
|
}
|
|
239
261
|
});
|
|
240
262
|
//console.log(result);
|
|
@@ -243,7 +265,7 @@ function deleteItem(tableName, partitionKey, rowKey) {
|
|
|
243
265
|
catch (e) {
|
|
244
266
|
//success = false;
|
|
245
267
|
}
|
|
246
|
-
return success;
|
|
268
|
+
return { success, errorCode };
|
|
247
269
|
});
|
|
248
270
|
}
|
|
249
271
|
exports.deleteItem = deleteItem;
|
|
@@ -251,12 +273,16 @@ function upsertItem(tableName, item, options) {
|
|
|
251
273
|
return __awaiter(this, void 0, void 0, function* () {
|
|
252
274
|
const table = getTableClient(tableName);
|
|
253
275
|
let success = false;
|
|
276
|
+
let errorCode;
|
|
254
277
|
try {
|
|
255
278
|
let result = yield table.upsertEntity(item, (options === null || options === void 0 ? void 0 : options.mode) || "Replace", {
|
|
256
279
|
onResponse: raw => {
|
|
257
280
|
let error = isError(raw);
|
|
258
281
|
success = error.isError !== true;
|
|
259
|
-
|
|
282
|
+
if (error.isError) {
|
|
283
|
+
console.error(error.errorCode);
|
|
284
|
+
errorCode = error.errorCode;
|
|
285
|
+
}
|
|
260
286
|
}
|
|
261
287
|
});
|
|
262
288
|
//console.log(result);
|
|
@@ -266,7 +292,7 @@ function upsertItem(tableName, item, options) {
|
|
|
266
292
|
console.error(e);
|
|
267
293
|
success = false;
|
|
268
294
|
}
|
|
269
|
-
return success;
|
|
295
|
+
return { success, errorCode };
|
|
270
296
|
});
|
|
271
297
|
}
|
|
272
298
|
exports.upsertItem = upsertItem;
|
|
@@ -289,8 +315,8 @@ class Table {
|
|
|
289
315
|
}
|
|
290
316
|
getItems(options) {
|
|
291
317
|
return __awaiter(this, void 0, void 0, function* () {
|
|
292
|
-
let
|
|
293
|
-
return
|
|
318
|
+
let itemsResult = yield getItems(this.tableName, options);
|
|
319
|
+
return Object.assign(Object.assign({}, itemsResult), { result: itemsResult.result.map(i => this.transform.load(i, this)) });
|
|
294
320
|
});
|
|
295
321
|
}
|
|
296
322
|
addItem(item) {
|
|
@@ -316,22 +342,22 @@ class Table {
|
|
|
316
342
|
exports.Table = Table;
|
|
317
343
|
function isError(raw) {
|
|
318
344
|
let isError = false;
|
|
319
|
-
let
|
|
345
|
+
let errorCode = null;
|
|
320
346
|
//201 - table created successfully
|
|
321
347
|
//204 - entity created successfully
|
|
322
348
|
//409 - table/entity already exists
|
|
323
|
-
//400 - table name not allowed
|
|
349
|
+
//400 - table name not allowed / Property value too large
|
|
324
350
|
//404 - TableNotFound when adding item
|
|
325
351
|
if (raw.status >= 400) {
|
|
326
352
|
isError = true;
|
|
327
353
|
let error = raw.parsedBody;
|
|
328
|
-
|
|
354
|
+
errorCode = error && error.odataError && !(0, common_1.isNullOrEmptyString)(error.odataError.code)
|
|
329
355
|
? error.odataError.code
|
|
330
356
|
: `Unknown error`; //for some errors like table name too short, error code is empty
|
|
331
357
|
}
|
|
332
358
|
else {
|
|
333
359
|
isError = false;
|
|
334
360
|
}
|
|
335
|
-
return { isError,
|
|
361
|
+
return { isError, errorCode };
|
|
336
362
|
}
|
|
337
363
|
//# sourceMappingURL=table-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-storage.js","sourceRoot":"","sources":["../../src/storage/table-storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAMA,oDAAkH;AAClH,yCAAsE;AACtE,mCAAgE;AAEhE,IAAI,gBAAgB,GAAW,IAAI,CAAC;AACpC,SAAgB,qBAAqB,CAAC,MAAqC;IACvE,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,CAAC;AAFD,sDAEC;AAED,SAAS,eAAe;IACpB,IAAI,IAAA,4BAAmB,EAAC,gBAAgB,CAAC;QAAE,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC3F,OAAO,gCAAkB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACrE,CAAC;AACD,SAAS,cAAc,CAAC,SAAiB;IACrC,IAAI,IAAA,4BAAmB,EAAC,gBAAgB,CAAC;QAAE,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC3F,OAAO,yBAAW,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AACzE,CAAC;
|
|
1
|
+
{"version":3,"file":"table-storage.js","sourceRoot":"","sources":["../../src/storage/table-storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/get-with-cache.ts
CHANGED
|
@@ -10,7 +10,7 @@ export async function getWithCache<T>(worker: () => Promise<{ success: boolean;
|
|
|
10
10
|
/** must be unique for your call! function name, and parameters */
|
|
11
11
|
cacheKey: string;
|
|
12
12
|
forceRefresh?: boolean;
|
|
13
|
-
}) {
|
|
13
|
+
}): Promise<T> {
|
|
14
14
|
const now = new Date();
|
|
15
15
|
//purge old values
|
|
16
16
|
Object.keys($$cache).forEach(key => {
|
|
@@ -31,6 +31,7 @@ interface IODataError {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
type operationResult<T = never> = { success: true; result?: T; errorCode?: string; } | { success: false; result?: T; errorCode: string; };
|
|
34
35
|
|
|
35
36
|
type TableEntityBase = {
|
|
36
37
|
/**
|
|
@@ -48,10 +49,10 @@ export type TableEntityType<DataType extends TableEntityBase> = {
|
|
|
48
49
|
[P in keyof DataType]: string | boolean | Date | number;
|
|
49
50
|
};
|
|
50
51
|
|
|
51
|
-
export async function findTable(tableName: string) {
|
|
52
|
+
export async function findTable(tableName: string): Promise<operationResult> {
|
|
52
53
|
const tableService = getTableService();
|
|
53
54
|
|
|
54
|
-
let
|
|
55
|
+
let success = false;
|
|
55
56
|
try {
|
|
56
57
|
const tables = tableService.listTables({
|
|
57
58
|
queryOptions: {
|
|
@@ -60,12 +61,12 @@ export async function findTable(tableName: string) {
|
|
|
60
61
|
}
|
|
61
62
|
});
|
|
62
63
|
for await (const table of tables) {
|
|
63
|
-
|
|
64
|
+
success = true;
|
|
64
65
|
}
|
|
65
66
|
} catch (e) {
|
|
66
67
|
//console.log(e);
|
|
67
68
|
}
|
|
68
|
-
return found;
|
|
69
|
+
return { success, errorCode: success ? undefined : "Not found" };
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
export async function listTables() {
|
|
@@ -104,48 +105,58 @@ export async function listTables() {
|
|
|
104
105
|
// return success;
|
|
105
106
|
// }
|
|
106
107
|
|
|
107
|
-
export async function ensureTable(tableName: string) {
|
|
108
|
+
export async function ensureTable(tableName: string): Promise<operationResult> {
|
|
108
109
|
const table = getTableClient(tableName);
|
|
109
110
|
let success = false;
|
|
111
|
+
let errorCode: string;
|
|
110
112
|
try {
|
|
111
113
|
await table.createTable({
|
|
112
114
|
onResponse: raw => {
|
|
113
115
|
let error = isError(raw);
|
|
114
|
-
success = error.isError !== true || error.
|
|
115
|
-
|
|
116
|
+
success = error.isError !== true || error.errorCode === "TableAlreadyExists";
|
|
117
|
+
if (error.isError) {
|
|
118
|
+
console.error(error.errorCode);
|
|
119
|
+
errorCode = error.errorCode;
|
|
120
|
+
}
|
|
116
121
|
}
|
|
117
122
|
});
|
|
118
123
|
} catch (e) {
|
|
119
124
|
//console.error(e);
|
|
120
125
|
}
|
|
121
126
|
|
|
122
|
-
return success;
|
|
127
|
+
return { success, errorCode };
|
|
123
128
|
}
|
|
124
129
|
|
|
125
|
-
export async function deleteTable(tableName: string) {
|
|
130
|
+
export async function deleteTable(tableName: string): Promise<operationResult> {
|
|
126
131
|
const table = getTableClient(tableName);
|
|
127
132
|
let success = false;
|
|
133
|
+
let errorCode: string;
|
|
128
134
|
try {
|
|
129
135
|
await table.deleteTable({
|
|
130
136
|
onResponse: raw => {
|
|
131
137
|
let error = isError(raw);
|
|
132
138
|
success = error.isError !== true;
|
|
133
|
-
|
|
139
|
+
if (error.isError) {
|
|
140
|
+
console.error(error.errorCode);
|
|
141
|
+
errorCode = error.errorCode;
|
|
142
|
+
}
|
|
134
143
|
}
|
|
135
144
|
});
|
|
136
145
|
} catch (e) {
|
|
137
146
|
//console.log(e);
|
|
138
147
|
}
|
|
139
148
|
|
|
140
|
-
return success;
|
|
149
|
+
return { success, errorCode };
|
|
141
150
|
}
|
|
142
151
|
|
|
143
152
|
//https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/tables/data-tables/samples/v13/typescript/src/queryEntities.ts
|
|
144
153
|
export async function getItems<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, options?: {
|
|
145
154
|
filterStatment?: IOdataFilterStatement<DataType>;
|
|
146
155
|
postFilter?: (item: DataType) => boolean;
|
|
147
|
-
}) {
|
|
156
|
+
}): Promise<operationResult<DataType[]>> {
|
|
148
157
|
const table = getTableClient(tableName);
|
|
158
|
+
let success = true;
|
|
159
|
+
let errorCode: string;
|
|
149
160
|
let result: DataType[] = [];
|
|
150
161
|
try {
|
|
151
162
|
let o: ListTableEntitiesOptions;
|
|
@@ -168,35 +179,48 @@ export async function getItems<DataType extends TableEntityBase & TableEntityTyp
|
|
|
168
179
|
}
|
|
169
180
|
} catch (e) {
|
|
170
181
|
//console.log(e);
|
|
182
|
+
success = false;
|
|
183
|
+
errorCode = "Could not get items";
|
|
171
184
|
}
|
|
172
|
-
return result;
|
|
185
|
+
return { success, errorCode, result };
|
|
173
186
|
}
|
|
174
187
|
|
|
175
|
-
export async function addItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType) {
|
|
188
|
+
export async function addItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType): Promise<operationResult> {
|
|
176
189
|
const table = getTableClient(tableName);
|
|
177
190
|
let success = false;
|
|
191
|
+
let errorCode: string;
|
|
178
192
|
try {
|
|
179
193
|
let result = await table.createEntity(item, {
|
|
180
194
|
onResponse: raw => {
|
|
181
195
|
let error = isError(raw);
|
|
182
196
|
success = error.isError !== true;
|
|
183
|
-
|
|
197
|
+
if (error.isError) {
|
|
198
|
+
console.error(error.errorCode);
|
|
199
|
+
errorCode = error.errorCode;
|
|
200
|
+
}
|
|
184
201
|
}
|
|
185
202
|
});
|
|
186
203
|
//console.log(result);
|
|
187
204
|
success = true;
|
|
188
205
|
} catch (e) { success = false; }
|
|
189
|
-
return success;
|
|
206
|
+
return { success, errorCode };
|
|
190
207
|
}
|
|
191
208
|
|
|
192
|
-
export async function deleteItem(tableName: string, partitionKey: string, rowKey: string) {
|
|
209
|
+
export async function deleteItem(tableName: string, partitionKey: string, rowKey: string): Promise<operationResult> {
|
|
193
210
|
const table = getTableClient(tableName);
|
|
194
211
|
let success = false;
|
|
212
|
+
let errorCode: string;
|
|
213
|
+
|
|
195
214
|
try {
|
|
196
215
|
let result = await table.deleteEntity(partitionKey, rowKey, {
|
|
197
216
|
onResponse: raw => {
|
|
198
217
|
let error = isError(raw);
|
|
199
|
-
|
|
218
|
+
//error not found is still a success for delete action
|
|
219
|
+
success = error.isError !== true || error.errorCode === "ResourceNotFound";
|
|
220
|
+
if (error.isError) {
|
|
221
|
+
console.error(error.errorCode);
|
|
222
|
+
errorCode = error.errorCode;
|
|
223
|
+
}
|
|
200
224
|
}
|
|
201
225
|
});
|
|
202
226
|
//console.log(result);
|
|
@@ -204,20 +228,24 @@ export async function deleteItem(tableName: string, partitionKey: string, rowKey
|
|
|
204
228
|
} catch (e) {
|
|
205
229
|
//success = false;
|
|
206
230
|
}
|
|
207
|
-
return success;
|
|
231
|
+
return { success, errorCode };
|
|
208
232
|
}
|
|
209
233
|
|
|
210
234
|
export async function upsertItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType, options?: {
|
|
211
235
|
mode?: UpdateMode
|
|
212
|
-
}) {
|
|
236
|
+
}): Promise<operationResult> {
|
|
213
237
|
const table = getTableClient(tableName);
|
|
214
238
|
let success = false;
|
|
239
|
+
let errorCode: string;
|
|
215
240
|
try {
|
|
216
241
|
let result = await table.upsertEntity(item, options?.mode || "Replace", {
|
|
217
242
|
onResponse: raw => {
|
|
218
243
|
let error = isError(raw);
|
|
219
244
|
success = error.isError !== true;
|
|
220
|
-
|
|
245
|
+
if (error.isError) {
|
|
246
|
+
console.error(error.errorCode);
|
|
247
|
+
errorCode = error.errorCode;
|
|
248
|
+
}
|
|
221
249
|
}
|
|
222
250
|
});
|
|
223
251
|
//console.log(result);
|
|
@@ -226,13 +254,13 @@ export async function upsertItem<DataType extends TableEntityBase & TableEntityT
|
|
|
226
254
|
console.error(e);
|
|
227
255
|
success = false;
|
|
228
256
|
}
|
|
229
|
-
return success;
|
|
257
|
+
return { success, errorCode };
|
|
230
258
|
}
|
|
231
259
|
|
|
232
260
|
export class Table<KeysType extends TableEntityBase,
|
|
233
261
|
GetKeysParam,
|
|
234
262
|
SavedRow extends KeysType & TableEntityType<SavedRow>,
|
|
235
|
-
ParsedRow = SavedRow>{
|
|
263
|
+
ParsedRow = SavedRow> {
|
|
236
264
|
private tableName: string;
|
|
237
265
|
private transform: {
|
|
238
266
|
save: (parsed: ParsedRow, table: Table<KeysType, GetKeysParam, SavedRow, ParsedRow>) => SavedRow;
|
|
@@ -266,8 +294,8 @@ export class Table<KeysType extends TableEntityBase,
|
|
|
266
294
|
filterStatment?: IOdataFilterStatement<SavedRow>;
|
|
267
295
|
postFilter?: (item: SavedRow) => boolean;
|
|
268
296
|
}) {
|
|
269
|
-
let
|
|
270
|
-
return
|
|
297
|
+
let itemsResult = await getItems<SavedRow>(this.tableName, options);
|
|
298
|
+
return { ...itemsResult, result: itemsResult.result.map(i => this.transform.load(i, this)) };
|
|
271
299
|
}
|
|
272
300
|
public async addItem(item: ParsedRow) {
|
|
273
301
|
await this.ensure();
|
|
@@ -292,17 +320,17 @@ export class Table<KeysType extends TableEntityBase,
|
|
|
292
320
|
|
|
293
321
|
function isError(raw: FullOperationResponse) {
|
|
294
322
|
let isError = false;
|
|
295
|
-
let
|
|
323
|
+
let errorCode: string = null;
|
|
296
324
|
|
|
297
325
|
//201 - table created successfully
|
|
298
326
|
//204 - entity created successfully
|
|
299
327
|
//409 - table/entity already exists
|
|
300
|
-
//400 - table name not allowed
|
|
328
|
+
//400 - table name not allowed / Property value too large
|
|
301
329
|
//404 - TableNotFound when adding item
|
|
302
330
|
if (raw.status >= 400) {
|
|
303
331
|
isError = true;
|
|
304
332
|
let error = raw.parsedBody as IODataError;
|
|
305
|
-
|
|
333
|
+
errorCode = error && error.odataError && !isNullOrEmptyString(error.odataError.code)
|
|
306
334
|
? error.odataError.code
|
|
307
335
|
: `Unknown error`;//for some errors like table name too short, error code is empty
|
|
308
336
|
}
|
|
@@ -310,5 +338,5 @@ function isError(raw: FullOperationResponse) {
|
|
|
310
338
|
isError = false;
|
|
311
339
|
}
|
|
312
340
|
|
|
313
|
-
return { isError,
|
|
341
|
+
return { isError, errorCode };
|
|
314
342
|
}
|