emberflow 1.4.28 → 1.4.30
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/lib/index-utils.js +9 -4
- package/lib/index-utils.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/init-db-structure.js +28 -4
- package/lib/init-db-structure.js.map +1 -1
- package/lib/logics/view-logics.js +160 -92
- package/lib/logics/view-logics.js.map +1 -1
- package/lib/sample-custom/db-structure.d.ts +18 -2
- package/lib/sample-custom/db-structure.js +18 -2
- package/lib/sample-custom/db-structure.js.map +1 -1
- package/lib/tests/index-utils.test.js +46 -28
- package/lib/tests/index-utils.test.js.map +1 -1
- package/lib/tests/init-db-structure.test.js +69 -3
- package/lib/tests/init-db-structure.test.js.map +1 -1
- package/lib/tests/logics/view-logics.test.js +153 -55
- package/lib/tests/logics/view-logics.test.js.map +1 -1
- package/lib/tests/utils/db-structure.test.d.ts +1 -0
- package/lib/tests/utils/db-structure.test.js +38 -0
- package/lib/tests/utils/db-structure.test.js.map +1 -0
- package/lib/types.d.ts +4 -0
- package/lib/utils/db-structure.js +4 -2
- package/lib/utils/db-structure.js.map +1 -1
- package/lib/utils/paths.d.ts +2 -0
- package/lib/utils/paths.js +18 -3
- package/lib/utils/paths.js.map +1 -1
- package/package.json +1 -1
- package/src/sample-custom/db-structure.ts +19 -2
|
@@ -31,8 +31,9 @@ const pubsub_1 = require("../utils/pubsub");
|
|
|
31
31
|
const misc_1 = require("../utils/misc");
|
|
32
32
|
const paths_1 = require("../utils/paths");
|
|
33
33
|
function createViewLogicFn(viewDefinition) {
|
|
34
|
-
const { srcEntity, srcProps, destEntity, destProp, } = viewDefinition;
|
|
35
|
-
const
|
|
34
|
+
const { srcEntity: defSrcEntity, srcProps: defSrcProps, destEntity: defDestEntity, destProp: defDestProp, options: defOptions, } = viewDefinition;
|
|
35
|
+
const { syncCreate = false } = defOptions || {};
|
|
36
|
+
const logicName = `${defDestEntity}${defDestProp ? `#${defDestProp.name}` : ""}`;
|
|
36
37
|
function formViewDocId(viewDstPath) {
|
|
37
38
|
let viewDocId = viewDstPath.replace(/[/#]/g, "+");
|
|
38
39
|
if (viewDocId.startsWith("+")) {
|
|
@@ -40,15 +41,36 @@ function createViewLogicFn(viewDefinition) {
|
|
|
40
41
|
}
|
|
41
42
|
return viewDocId;
|
|
42
43
|
}
|
|
44
|
+
function createLogicDocsWhenViewIsCreated(srcPath, viewDstPath) {
|
|
45
|
+
const logicResultDocs = [];
|
|
46
|
+
const srcAtViewsPath = formAtViewsPath(viewDstPath, srcPath);
|
|
47
|
+
const { destProp: viewDestProp, destPropId: viewDestPropId, isArrayMap: viewIsArrayMap, basePath: viewBasePath, } = (0, paths_1.getDestPropAndDestPropId)(viewDstPath);
|
|
48
|
+
logicResultDocs.push({
|
|
49
|
+
action: "create",
|
|
50
|
+
dstPath: srcAtViewsPath,
|
|
51
|
+
doc: Object.assign({ path: viewDstPath, srcProps: defSrcProps.sort(), destEntity: defDestEntity }, (viewDestProp ? { destProp: viewDestProp } : {})),
|
|
52
|
+
});
|
|
53
|
+
if (viewDestProp && viewIsArrayMap) {
|
|
54
|
+
logicResultDocs.push({
|
|
55
|
+
action: "merge",
|
|
56
|
+
dstPath: viewBasePath,
|
|
57
|
+
instructions: {
|
|
58
|
+
[`@${viewDestProp}`]: `arr+(${viewDestPropId})`,
|
|
59
|
+
},
|
|
60
|
+
skipRunViewLogics: true,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return logicResultDocs;
|
|
64
|
+
}
|
|
43
65
|
function formAtViewsPath(viewDstPath, srcPath) {
|
|
44
66
|
const viewDocId = formViewDocId(viewDstPath);
|
|
45
67
|
return `${srcPath}/@views/${viewDocId}`;
|
|
46
68
|
}
|
|
47
69
|
const srcToDstLogicFn = async (logicResultDoc) => {
|
|
48
|
-
const { doc, instructions, dstPath: srcPath, action, } = logicResultDoc;
|
|
49
|
-
console.
|
|
50
|
-
function
|
|
51
|
-
const documents =
|
|
70
|
+
const { doc: srcDoc, instructions: srcInstructions, dstPath: srcPath, action: srcAction, } = logicResultDoc;
|
|
71
|
+
console.info(`Executing ViewLogic on document at ${srcPath}...`);
|
|
72
|
+
function syncDeleteToViewsDstPath() {
|
|
73
|
+
const documents = atViewsDocs.map((viewDstPathDoc) => {
|
|
52
74
|
return {
|
|
53
75
|
action: "delete",
|
|
54
76
|
dstPath: viewDstPathDoc.data().path,
|
|
@@ -57,60 +79,59 @@ function createViewLogicFn(viewDefinition) {
|
|
|
57
79
|
return {
|
|
58
80
|
name: `${logicName} ViewLogic`,
|
|
59
81
|
status: "finished",
|
|
60
|
-
timeFinished: admin.firestore.Timestamp.now(),
|
|
61
82
|
documents,
|
|
62
83
|
};
|
|
63
84
|
}
|
|
64
|
-
async function
|
|
85
|
+
async function syncMergeToViewsDstPath() {
|
|
65
86
|
var _a;
|
|
66
87
|
const now = admin.firestore.Timestamp.now();
|
|
67
88
|
const viewDoc = {
|
|
68
89
|
"@updatedByViewDefinitionAt": now,
|
|
69
90
|
};
|
|
70
91
|
const viewInstructions = {};
|
|
71
|
-
for (const srcProp of
|
|
72
|
-
if ((
|
|
73
|
-
viewDoc[srcProp] =
|
|
92
|
+
for (const srcProp of defSrcProps) {
|
|
93
|
+
if ((srcDoc === null || srcDoc === void 0 ? void 0 : srcDoc[srcProp]) !== undefined) {
|
|
94
|
+
viewDoc[srcProp] = srcDoc[srcProp];
|
|
74
95
|
}
|
|
75
|
-
if (
|
|
76
|
-
viewInstructions[srcProp] =
|
|
96
|
+
if (srcInstructions === null || srcInstructions === void 0 ? void 0 : srcInstructions[srcProp]) {
|
|
97
|
+
viewInstructions[srcProp] = srcInstructions[srcProp];
|
|
77
98
|
}
|
|
78
99
|
}
|
|
79
100
|
const viewLogicResultDocs = [];
|
|
80
|
-
for (const
|
|
81
|
-
const
|
|
82
|
-
const { basePath, destProp, destPropId } = (0, paths_1.getDestPropAndDestPropId)(
|
|
83
|
-
const
|
|
101
|
+
for (const atViewsDoc of atViewsDocs) {
|
|
102
|
+
const viewDstPath = atViewsDoc.data().path;
|
|
103
|
+
const { basePath: viewBasePath, destProp: viewDestProp, destPropId: viewDestPropId } = (0, paths_1.getDestPropAndDestPropId)(viewDstPath);
|
|
104
|
+
const viewDocSnap = await index_1.db.doc(viewBasePath).get();
|
|
84
105
|
// If the doc doesn't exist, delete dstPath and skip creating logicDoc
|
|
85
|
-
if (!
|
|
106
|
+
if (!viewDocSnap.exists) {
|
|
86
107
|
viewLogicResultDocs.push({
|
|
87
108
|
action: "delete",
|
|
88
|
-
dstPath:
|
|
109
|
+
dstPath: atViewsDoc.ref.path,
|
|
89
110
|
});
|
|
90
111
|
continue;
|
|
91
112
|
}
|
|
92
|
-
if (
|
|
93
|
-
const
|
|
113
|
+
if (viewDestProp) {
|
|
114
|
+
const viewDocData = viewDocSnap.data();
|
|
94
115
|
// If has destPropId but destPropId doesn't exist, delete dstPath and skip creating logicDoc
|
|
95
|
-
if (
|
|
116
|
+
if (viewDestPropId && !((_a = viewDocData === null || viewDocData === void 0 ? void 0 : viewDocData[viewDestProp]) === null || _a === void 0 ? void 0 : _a[viewDestPropId])) {
|
|
96
117
|
viewLogicResultDocs.push({
|
|
97
118
|
action: "delete",
|
|
98
|
-
dstPath:
|
|
119
|
+
dstPath: atViewsDoc.ref.path,
|
|
99
120
|
});
|
|
100
121
|
continue;
|
|
101
122
|
}
|
|
102
123
|
// If destProp only and doesn't exist, delete dstPath and skip creating logicDoc
|
|
103
|
-
if (!(
|
|
124
|
+
if (!(viewDocData === null || viewDocData === void 0 ? void 0 : viewDocData[viewDestProp])) {
|
|
104
125
|
viewLogicResultDocs.push({
|
|
105
126
|
action: "delete",
|
|
106
|
-
dstPath:
|
|
127
|
+
dstPath: atViewsDoc.ref.path,
|
|
107
128
|
});
|
|
108
129
|
continue;
|
|
109
130
|
}
|
|
110
131
|
}
|
|
111
132
|
viewLogicResultDocs.push({
|
|
112
133
|
action: "merge",
|
|
113
|
-
dstPath,
|
|
134
|
+
dstPath: viewDstPath,
|
|
114
135
|
doc: viewDoc,
|
|
115
136
|
instructions: viewInstructions,
|
|
116
137
|
});
|
|
@@ -118,60 +139,110 @@ function createViewLogicFn(viewDefinition) {
|
|
|
118
139
|
return {
|
|
119
140
|
name: `${logicName} ViewLogic`,
|
|
120
141
|
status: "finished",
|
|
121
|
-
timeFinished: now,
|
|
122
142
|
documents: viewLogicResultDocs,
|
|
123
143
|
};
|
|
124
144
|
}
|
|
125
145
|
async function syncAtViewsSrcPropsIfDifferentFromViewDefinition() {
|
|
126
|
-
for (const
|
|
127
|
-
const { srcProps:
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
if (viewDocId !== doc.id) {
|
|
132
|
-
await doc.ref.delete();
|
|
133
|
-
await index_1.db.doc(srcAtViewsPath).set(Object.assign({ path: atViewsDstPath, srcProps: sortedSrcProps, destEntity }, (destProp ? { destProp: destProp.name } : {})));
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
if (atViewsSrcProps.join(",") === sortedSrcProps.join(",")) {
|
|
146
|
+
for (const atViewsDoc of atViewsDocs) {
|
|
147
|
+
const { srcProps: atViewSrcProps } = atViewsDoc.data();
|
|
148
|
+
const atViewPath = atViewsDoc.ref.path;
|
|
149
|
+
const defSortedSrcProps = defSrcProps.sort();
|
|
150
|
+
if (atViewSrcProps.join(",") === defSortedSrcProps.join(",")) {
|
|
137
151
|
continue;
|
|
138
152
|
}
|
|
139
|
-
await index_1.db.doc(
|
|
153
|
+
await index_1.db.doc(atViewPath).update({ srcProps: defSortedSrcProps });
|
|
140
154
|
}
|
|
141
155
|
}
|
|
156
|
+
async function syncCreateToDstPaths() {
|
|
157
|
+
const viewLogicResultDocs = [];
|
|
158
|
+
const logicResult = {
|
|
159
|
+
name: `${logicName} ViewLogic`,
|
|
160
|
+
status: "finished",
|
|
161
|
+
documents: viewLogicResultDocs,
|
|
162
|
+
};
|
|
163
|
+
const srcParentPath = (0, paths_1.getParentPath)(srcPath);
|
|
164
|
+
const collectionRef = index_1.db.collection("@syncCreateViews")
|
|
165
|
+
.where("srcPath", "==", srcParentPath);
|
|
166
|
+
const syncCreateViewSnapshot = await collectionRef.get();
|
|
167
|
+
const syncCreateViewDocs = syncCreateViewSnapshot.docs;
|
|
168
|
+
const docId = srcPath.split("/").pop();
|
|
169
|
+
if (!docId) {
|
|
170
|
+
console.error("docId could not be determined from srcPath", srcPath);
|
|
171
|
+
return {
|
|
172
|
+
name: `${logicName} ViewLogic`,
|
|
173
|
+
status: "error",
|
|
174
|
+
message: "docId could not be determined from srcPath",
|
|
175
|
+
documents: [],
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
for (const syncCreateViewDoc of syncCreateViewDocs) {
|
|
179
|
+
const syncCreateViewData = syncCreateViewDoc.data();
|
|
180
|
+
const { dstPath: viewBaseDstPath } = syncCreateViewData;
|
|
181
|
+
const { destProp: viewDestProp } = (0, paths_1.getDestPropAndDestPropId)(viewBaseDstPath);
|
|
182
|
+
const viewDstPath = viewDestProp ? `${viewBaseDstPath}[${docId}]` : `${viewBaseDstPath}/${docId}`;
|
|
183
|
+
viewLogicResultDocs.push({
|
|
184
|
+
action: "create",
|
|
185
|
+
dstPath: viewDstPath,
|
|
186
|
+
doc: srcDoc,
|
|
187
|
+
}, ...createLogicDocsWhenViewIsCreated(srcPath, viewDstPath));
|
|
188
|
+
}
|
|
189
|
+
return logicResult;
|
|
190
|
+
}
|
|
191
|
+
if (srcAction === "create" && syncCreate) {
|
|
192
|
+
return syncCreateToDstPaths();
|
|
193
|
+
}
|
|
142
194
|
const modifiedFields = [
|
|
143
|
-
...Object.keys(
|
|
144
|
-
...Object.keys(
|
|
195
|
+
...Object.keys(srcDoc || {}),
|
|
196
|
+
...Object.keys(srcInstructions || {}),
|
|
145
197
|
];
|
|
146
198
|
let query = index_1.db.doc(srcPath)
|
|
147
199
|
.collection("@views")
|
|
148
|
-
.where("destEntity", "==",
|
|
149
|
-
if (
|
|
200
|
+
.where("destEntity", "==", defDestEntity);
|
|
201
|
+
if (srcAction === "delete") {
|
|
150
202
|
console.debug("action === delete");
|
|
151
203
|
}
|
|
152
204
|
else {
|
|
153
205
|
query = query.where("srcProps", "array-contains-any", modifiedFields);
|
|
154
206
|
}
|
|
155
|
-
if (
|
|
156
|
-
query = query.where("destProp", "==",
|
|
207
|
+
if (defDestProp) {
|
|
208
|
+
query = query.where("destProp", "==", defDestProp.name);
|
|
157
209
|
}
|
|
158
|
-
const
|
|
210
|
+
const atViewsDocs = (await query.get()).docs;
|
|
159
211
|
await syncAtViewsSrcPropsIfDifferentFromViewDefinition();
|
|
160
|
-
if (
|
|
161
|
-
return
|
|
212
|
+
if (srcAction === "delete") {
|
|
213
|
+
return syncDeleteToViewsDstPath();
|
|
162
214
|
}
|
|
163
215
|
else {
|
|
164
|
-
return
|
|
216
|
+
return syncMergeToViewsDstPath();
|
|
165
217
|
}
|
|
166
218
|
};
|
|
219
|
+
function createLogicDocsWhenViewIsDeleted(srcPath, viewDstPath) {
|
|
220
|
+
const { destProp: viewDestProp, destPropId: viewDestPropId, isArrayMap: viewIsArrayMap, basePath: viewBasePath, } = (0, paths_1.getDestPropAndDestPropId)(viewDstPath);
|
|
221
|
+
const srcAtViewsPath = formAtViewsPath(viewDstPath, srcPath);
|
|
222
|
+
const logicResultDocs = [];
|
|
223
|
+
logicResultDocs.push({
|
|
224
|
+
action: "delete",
|
|
225
|
+
dstPath: srcAtViewsPath,
|
|
226
|
+
});
|
|
227
|
+
if (viewDestProp && viewIsArrayMap) {
|
|
228
|
+
logicResultDocs.push({
|
|
229
|
+
action: "merge",
|
|
230
|
+
dstPath: viewBasePath,
|
|
231
|
+
instructions: {
|
|
232
|
+
[`@${viewDestProp}`]: `arr-(${viewDestPropId})`,
|
|
233
|
+
},
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return logicResultDocs;
|
|
237
|
+
}
|
|
167
238
|
const dstToSrcLogicFn = async (logicResultDoc) => {
|
|
168
239
|
const logicResult = {
|
|
169
240
|
name: `${logicName} Dst-to-Src`,
|
|
170
241
|
status: "finished",
|
|
171
242
|
documents: [],
|
|
172
243
|
};
|
|
173
|
-
const { dstPath, action, doc, } = logicResultDoc;
|
|
174
|
-
const srcDocId =
|
|
244
|
+
const { dstPath: viewDstPath, action: viewAction, doc: viewDoc, } = logicResultDoc;
|
|
245
|
+
const srcDocId = viewDoc === null || viewDoc === void 0 ? void 0 : viewDoc["@id"];
|
|
175
246
|
if (!srcDocId) {
|
|
176
247
|
console.error("Document does not have an @id attribute");
|
|
177
248
|
logicResult.status = "error";
|
|
@@ -179,11 +250,11 @@ function createViewLogicFn(viewDefinition) {
|
|
|
179
250
|
return logicResult;
|
|
180
251
|
}
|
|
181
252
|
function formSrcPath() {
|
|
182
|
-
const srcDocPath = index_1.docPaths[
|
|
253
|
+
const srcDocPath = index_1.docPaths[defSrcEntity];
|
|
183
254
|
let srcPath = srcDocPath.split("/").slice(0, -1).join("/") + "/" + srcDocId;
|
|
184
|
-
const destDocPath = index_1.docPaths[
|
|
185
|
-
const destDocPathRegex = index_1.docPathsRegex[
|
|
186
|
-
const destDocPathMatches =
|
|
255
|
+
const destDocPath = index_1.docPaths[defDestEntity];
|
|
256
|
+
const destDocPathRegex = index_1.docPathsRegex[defDestEntity];
|
|
257
|
+
const destDocPathMatches = viewDstPath.split("#")[0].match(destDocPathRegex);
|
|
187
258
|
// let's create a map of the placeholders with their matching values from dstPath
|
|
188
259
|
const dstPathKeyValuesMap = {};
|
|
189
260
|
if (destDocPathMatches) {
|
|
@@ -199,7 +270,7 @@ function createViewLogicFn(viewDefinition) {
|
|
|
199
270
|
if (srcDocPathKeys) {
|
|
200
271
|
for (const srcDocPathKey of srcDocPathKeys) {
|
|
201
272
|
const key = srcDocPathKey.replace(/[{}]/g, "");
|
|
202
|
-
const value = (
|
|
273
|
+
const value = (viewDoc === null || viewDoc === void 0 ? void 0 : viewDoc[key]) || dstPathKeyValuesMap[key];
|
|
203
274
|
if (value) {
|
|
204
275
|
srcPath = srcPath.replace(srcDocPathKey, value);
|
|
205
276
|
}
|
|
@@ -207,6 +278,34 @@ function createViewLogicFn(viewDefinition) {
|
|
|
207
278
|
}
|
|
208
279
|
return srcPath;
|
|
209
280
|
}
|
|
281
|
+
async function rememberForSyncCreate() {
|
|
282
|
+
const srcParentPath = (0, paths_1.getParentPath)(srcPath);
|
|
283
|
+
const dstParentPath = (0, paths_1.getParentPath)(viewDstPath);
|
|
284
|
+
const dstParentPathParts = dstParentPath.split(/[/#]/).filter(Boolean);
|
|
285
|
+
const isDstParentPathPartsEven = dstParentPathParts.length % 2 === 0;
|
|
286
|
+
if (isDstParentPathPartsEven) {
|
|
287
|
+
console.error(`invalid syncCreate dstPath, ${viewDstPath}`);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const docId = formViewDocId(dstParentPath);
|
|
291
|
+
const syncCreateDocPath = `@syncCreateViews/${docId}`;
|
|
292
|
+
const isAlreadyCreated = await paths_1._mockable.doesPathExists(syncCreateDocPath);
|
|
293
|
+
if (!isAlreadyCreated) {
|
|
294
|
+
logicResult.documents.push({
|
|
295
|
+
action: "create",
|
|
296
|
+
dstPath: syncCreateDocPath,
|
|
297
|
+
doc: {
|
|
298
|
+
destEntity: defDestEntity,
|
|
299
|
+
dstPath: dstParentPath,
|
|
300
|
+
srcPath: srcParentPath,
|
|
301
|
+
},
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
console.info(`${syncCreateDocPath} already exists — skipping creation.`);
|
|
306
|
+
}
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
210
309
|
const srcPath = formSrcPath();
|
|
211
310
|
if (srcPath.includes("{")) {
|
|
212
311
|
console.error("srcPath should not have a placeholder");
|
|
@@ -214,44 +313,13 @@ function createViewLogicFn(viewDefinition) {
|
|
|
214
313
|
logicResult.message = "srcPath should not have a placeholder";
|
|
215
314
|
return logicResult;
|
|
216
315
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
const isArrayMap = !!destPropId;
|
|
220
|
-
if (action === "delete") {
|
|
221
|
-
logicResult.documents.push({
|
|
222
|
-
action: "delete",
|
|
223
|
-
dstPath: srcAtViewsPath,
|
|
224
|
-
skipRunViewLogics: true,
|
|
225
|
-
});
|
|
226
|
-
if (destProp && isArrayMap) {
|
|
227
|
-
const dstBasePath = dstPath.split("#")[0];
|
|
228
|
-
logicResult.documents.push({
|
|
229
|
-
action: "merge",
|
|
230
|
-
dstPath: dstBasePath,
|
|
231
|
-
instructions: {
|
|
232
|
-
[`@${destProp}`]: `arr-(${srcDocId})`,
|
|
233
|
-
},
|
|
234
|
-
skipRunViewLogics: true,
|
|
235
|
-
});
|
|
236
|
-
}
|
|
316
|
+
if (viewAction === "delete") {
|
|
317
|
+
logicResult.documents.push(...createLogicDocsWhenViewIsDeleted(srcPath, viewDstPath));
|
|
237
318
|
}
|
|
238
319
|
else {
|
|
239
|
-
logicResult.documents.push(
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
doc: Object.assign({ path: logicResultDoc.dstPath, srcProps: srcProps.sort(), destEntity }, (destProp ? { destProp } : {})),
|
|
243
|
-
skipRunViewLogics: true,
|
|
244
|
-
});
|
|
245
|
-
if (destProp && isArrayMap) {
|
|
246
|
-
const dstBasePath = dstPath.split("#")[0];
|
|
247
|
-
logicResult.documents.push({
|
|
248
|
-
action: "merge",
|
|
249
|
-
dstPath: dstBasePath,
|
|
250
|
-
instructions: {
|
|
251
|
-
[`@${destProp}`]: `arr+(${srcDocId})`,
|
|
252
|
-
},
|
|
253
|
-
skipRunViewLogics: true,
|
|
254
|
-
});
|
|
320
|
+
logicResult.documents.push(...createLogicDocsWhenViewIsCreated(srcPath, viewDstPath));
|
|
321
|
+
if (syncCreate) {
|
|
322
|
+
await rememberForSyncCreate();
|
|
255
323
|
}
|
|
256
324
|
}
|
|
257
325
|
return logicResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-logics.js","sourceRoot":"","sources":["../../src/logics/view-logics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"view-logics.js","sourceRoot":"","sources":["../../src/logics/view-logics.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,11 @@ export declare enum Entity {
|
|
|
11
11
|
Topic = "topic",
|
|
12
12
|
Order = "order",
|
|
13
13
|
MenuItem = "menuItem",
|
|
14
|
+
OrderMenuItem = "orderMenuItem",
|
|
14
15
|
PrepArea = "prepArea",
|
|
15
|
-
PrepAreaMenuItem = "prepAreaMenuItem"
|
|
16
|
+
PrepAreaMenuItem = "prepAreaMenuItem",
|
|
17
|
+
RecipeIngredient = "recipeIngredient",
|
|
18
|
+
MenuItemIngredient = "menuItemIngredient"
|
|
16
19
|
}
|
|
17
20
|
export declare const dbStructure: {
|
|
18
21
|
servers: {
|
|
@@ -36,12 +39,25 @@ export declare const dbStructure: {
|
|
|
36
39
|
};
|
|
37
40
|
topics: {
|
|
38
41
|
topic: {
|
|
42
|
+
ingredients: {
|
|
43
|
+
recipeIngredient: {};
|
|
44
|
+
};
|
|
45
|
+
menuItems: {
|
|
46
|
+
menuItem: {
|
|
47
|
+
recipe: string;
|
|
48
|
+
ingredients: {
|
|
49
|
+
menuItemIngredient: {
|
|
50
|
+
[x: string]: {};
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
39
55
|
createdBy: string;
|
|
40
56
|
orders: {
|
|
41
57
|
order: {
|
|
42
58
|
createdBy: string;
|
|
43
59
|
menus: {
|
|
44
|
-
|
|
60
|
+
orderMenuItem: {
|
|
45
61
|
createdBy: string;
|
|
46
62
|
};
|
|
47
63
|
};
|
|
@@ -18,10 +18,13 @@ var Entity;
|
|
|
18
18
|
Entity["Topic"] = "topic";
|
|
19
19
|
Entity["Order"] = "order";
|
|
20
20
|
Entity["MenuItem"] = "menuItem";
|
|
21
|
+
Entity["OrderMenuItem"] = "orderMenuItem";
|
|
21
22
|
Entity["PrepArea"] = "prepArea";
|
|
22
23
|
Entity["PrepAreaMenuItem"] = "prepAreaMenuItem";
|
|
24
|
+
Entity["RecipeIngredient"] = "recipeIngredient";
|
|
25
|
+
Entity["MenuItemIngredient"] = "menuItemIngredient";
|
|
23
26
|
})(Entity = exports.Entity || (exports.Entity = {}));
|
|
24
|
-
// Map your custom
|
|
27
|
+
// Map your custom ent ities to dbStructure below.
|
|
25
28
|
// Do not remove users and [Entity.User]
|
|
26
29
|
// by default, view matches the id attribute of the view so make the sure that a view has an id
|
|
27
30
|
exports.dbStructure = {
|
|
@@ -46,12 +49,25 @@ exports.dbStructure = {
|
|
|
46
49
|
},
|
|
47
50
|
topics: {
|
|
48
51
|
[Entity.Topic]: {
|
|
52
|
+
ingredients: {
|
|
53
|
+
[Entity.RecipeIngredient]: {},
|
|
54
|
+
},
|
|
55
|
+
menuItems: {
|
|
56
|
+
[Entity.MenuItem]: {
|
|
57
|
+
recipe: (0, db_structure_1.view)(Entity.Topic, []),
|
|
58
|
+
ingredients: {
|
|
59
|
+
[Entity.MenuItemIngredient]: {
|
|
60
|
+
[(0, db_structure_1.view)(Entity.RecipeIngredient, [], { syncCreate: true })]: {},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
49
65
|
createdBy: (0, db_structure_1.view)(Entity.User, ["name", "email"]),
|
|
50
66
|
orders: {
|
|
51
67
|
[Entity.Order]: {
|
|
52
68
|
createdBy: (0, db_structure_1.view)(Entity.User, ["name", "email"]),
|
|
53
69
|
menus: {
|
|
54
|
-
[Entity.
|
|
70
|
+
[Entity.OrderMenuItem]: {
|
|
55
71
|
createdBy: (0, db_structure_1.view)(Entity.User, ["name", "email"]),
|
|
56
72
|
},
|
|
57
73
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-structure.js","sourceRoot":"","sources":["../../src/sample-custom/db-structure.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,wDAA2C;AAE3C,IAAY,
|
|
1
|
+
{"version":3,"file":"db-structure.js","sourceRoot":"","sources":["../../src/sample-custom/db-structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,6 +96,7 @@ describe("distributeDoc", () => {
|
|
|
96
96
|
dbSpy.mockRestore();
|
|
97
97
|
queueInstructionsSpy.mockRestore();
|
|
98
98
|
queueRunViewLogicsSpy.mockRestore();
|
|
99
|
+
transactionSetMock.mockRestore();
|
|
99
100
|
});
|
|
100
101
|
it("should create a document to dstPath", async () => {
|
|
101
102
|
const logicResultDoc = {
|
|
@@ -147,34 +148,6 @@ describe("distributeDoc", () => {
|
|
|
147
148
|
const dstDocRef = index_1.db.doc(logicResultDoc.dstPath);
|
|
148
149
|
expect(dstDocRef.set).toHaveBeenCalledWith(expectedData, { merge: true });
|
|
149
150
|
});
|
|
150
|
-
it("should process instructions if using transaction", async () => {
|
|
151
|
-
const logicResultDoc = {
|
|
152
|
-
action: "merge",
|
|
153
|
-
priority: "normal",
|
|
154
|
-
doc: { name: "test-doc-name-updated" },
|
|
155
|
-
instructions: {
|
|
156
|
-
"count": "++",
|
|
157
|
-
"score": "+5",
|
|
158
|
-
"minusCount": "--",
|
|
159
|
-
"minusScore": "-3",
|
|
160
|
-
},
|
|
161
|
-
dstPath: "/users/test-user-id/documents/test-doc-id",
|
|
162
|
-
};
|
|
163
|
-
const expectedData = Object.assign(Object.assign({}, logicResultDoc.doc), { "@id": "test-doc-id" });
|
|
164
|
-
await indexUtils.distributeDoc(logicResultDoc, undefined, transactionMock);
|
|
165
|
-
expect(admin.firestore().doc).toHaveBeenCalledTimes(1);
|
|
166
|
-
expect(admin.firestore().doc).toHaveBeenCalledWith("/users/test-user-id/documents/test-doc-id");
|
|
167
|
-
expect(queueInstructionsSpy).not.toHaveBeenCalled();
|
|
168
|
-
const expectedInstructions = {
|
|
169
|
-
"count": admin.firestore.FieldValue.increment(1),
|
|
170
|
-
"score": admin.firestore.FieldValue.increment(5),
|
|
171
|
-
"minusCount": admin.firestore.FieldValue.increment(-1),
|
|
172
|
-
"minusScore": admin.firestore.FieldValue.increment(-3),
|
|
173
|
-
};
|
|
174
|
-
const dstDocRef = index_1.db.doc(logicResultDoc.dstPath);
|
|
175
|
-
expect(transactionSetMock).toHaveBeenNthCalledWith(1, dstDocRef, expectedInstructions, { merge: true });
|
|
176
|
-
expect(transactionSetMock).toHaveBeenNthCalledWith(2, dstDocRef, expectedData, { merge: true });
|
|
177
|
-
});
|
|
178
151
|
it("should add parsed instructions to destPropId field if has destPropId", async () => {
|
|
179
152
|
transactionSetMock.mockReset();
|
|
180
153
|
const logicResultDoc = {
|
|
@@ -252,6 +225,51 @@ describe("distributeDoc", () => {
|
|
|
252
225
|
expect(queueRunViewLogicsSpy).toHaveBeenCalledTimes(0);
|
|
253
226
|
queueSubmitFormSpy.mockRestore();
|
|
254
227
|
});
|
|
228
|
+
describe("transactional", () => {
|
|
229
|
+
it("should process instructions if using transaction", async () => {
|
|
230
|
+
const logicResultDoc = {
|
|
231
|
+
action: "merge",
|
|
232
|
+
priority: "normal",
|
|
233
|
+
doc: { name: "test-doc-name-updated" },
|
|
234
|
+
instructions: {
|
|
235
|
+
"count": "++",
|
|
236
|
+
"score": "+5",
|
|
237
|
+
"minusCount": "--",
|
|
238
|
+
"minusScore": "-3",
|
|
239
|
+
},
|
|
240
|
+
dstPath: "/users/test-user-id/documents/test-doc-id",
|
|
241
|
+
};
|
|
242
|
+
const expectedData = Object.assign(Object.assign({}, logicResultDoc.doc), { "@id": "test-doc-id" });
|
|
243
|
+
await indexUtils.distributeDoc(logicResultDoc, undefined, transactionMock);
|
|
244
|
+
expect(admin.firestore().doc).toHaveBeenCalledTimes(1);
|
|
245
|
+
expect(admin.firestore().doc).toHaveBeenCalledWith("/users/test-user-id/documents/test-doc-id");
|
|
246
|
+
expect(queueInstructionsSpy).not.toHaveBeenCalled();
|
|
247
|
+
const expectedInstructions = {
|
|
248
|
+
"count": admin.firestore.FieldValue.increment(1),
|
|
249
|
+
"score": admin.firestore.FieldValue.increment(5),
|
|
250
|
+
"minusCount": admin.firestore.FieldValue.increment(-1),
|
|
251
|
+
"minusScore": admin.firestore.FieldValue.increment(-3),
|
|
252
|
+
};
|
|
253
|
+
const dstDocRef = index_1.db.doc(logicResultDoc.dstPath);
|
|
254
|
+
expect(transactionSetMock).toHaveBeenNthCalledWith(1, dstDocRef, expectedInstructions, { merge: true });
|
|
255
|
+
expect(transactionSetMock).toHaveBeenNthCalledWith(2, dstDocRef, expectedData, { merge: true });
|
|
256
|
+
});
|
|
257
|
+
it("should not allow submit-form logicResultDoc in transaction", async () => {
|
|
258
|
+
const logicResultDoc = {
|
|
259
|
+
action: "submit-form",
|
|
260
|
+
priority: "normal",
|
|
261
|
+
doc: {
|
|
262
|
+
"@actionType": "merge",
|
|
263
|
+
"name": "test-doc-name-updated",
|
|
264
|
+
},
|
|
265
|
+
dstPath: "/users/test-user-id/documents/test-doc-id",
|
|
266
|
+
};
|
|
267
|
+
const errorSpy = jest.spyOn(console, "error").mockImplementation();
|
|
268
|
+
await indexUtils.distributeDoc(logicResultDoc, undefined, transactionMock);
|
|
269
|
+
expect(errorSpy).toHaveBeenCalledWith("Submit-form is not supported in transactional logic result");
|
|
270
|
+
expect(transactionSetMock).toHaveBeenCalledTimes(0);
|
|
271
|
+
});
|
|
272
|
+
});
|
|
255
273
|
describe("batched", () => {
|
|
256
274
|
it("should create a document to dstPath", async () => {
|
|
257
275
|
const batchSetSpy = jest.spyOn(batch, "set").mockResolvedValue(undefined);
|