@or-sdk/idw 1.1.0-beta.1302.0 → 1.1.0-beta.1304.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.
- package/dist/cjs/idw.js +94 -35
- package/dist/cjs/idw.js.map +1 -1
- package/dist/esm/idw.js +78 -18
- package/dist/esm/idw.js.map +1 -1
- package/dist/types/idw.d.ts +3 -1
- package/dist/types/idw.d.ts.map +1 -1
- package/dist/types/types.d.ts +11 -0
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/idw.ts +85 -92
- package/src/types.ts +14 -0
package/dist/cjs/idw.js
CHANGED
|
@@ -94,9 +94,7 @@ var IDW = (function (_super) {
|
|
|
94
94
|
return [3, 4];
|
|
95
95
|
case 2:
|
|
96
96
|
e_1 = _a.sent();
|
|
97
|
-
return [4, this.graphApi.createGraph({
|
|
98
|
-
name: constants_1.GRAPH_NAME,
|
|
99
|
-
})];
|
|
97
|
+
return [4, this.graphApi.createGraph({ name: constants_1.GRAPH_NAME })];
|
|
100
98
|
case 3:
|
|
101
99
|
_a.sent();
|
|
102
100
|
return [3, 4];
|
|
@@ -106,32 +104,53 @@ var IDW = (function (_super) {
|
|
|
106
104
|
});
|
|
107
105
|
};
|
|
108
106
|
IDW.prototype.createOrUpdateFlow = function (flow) {
|
|
107
|
+
var _a, _b;
|
|
109
108
|
return __awaiter(this, void 0, void 0, function () {
|
|
110
|
-
var userId;
|
|
111
|
-
return __generator(this, function (
|
|
112
|
-
switch (
|
|
109
|
+
var id, userId, channel, skills;
|
|
110
|
+
return __generator(this, function (_c) {
|
|
111
|
+
switch (_c.label) {
|
|
113
112
|
case 0:
|
|
114
|
-
|
|
113
|
+
id = flow.id;
|
|
114
|
+
if (id === undefined) {
|
|
115
115
|
throw new Error('Only flows with id can be added to the IDW graph');
|
|
116
116
|
}
|
|
117
117
|
if (!flow.isDeleted) return [3, 2];
|
|
118
|
-
return [4, this.deleteFlow(
|
|
119
|
-
case 1: return [2,
|
|
118
|
+
return [4, this.deleteFlow(id)];
|
|
119
|
+
case 1: return [2, _c.sent()];
|
|
120
120
|
case 2: return [4, this.users.getCurrentUser()];
|
|
121
121
|
case 3:
|
|
122
|
-
userId = (
|
|
122
|
+
userId = (_c.sent()).userId;
|
|
123
123
|
return [4, this.graphQuery("\n MERGE (flow:FLOW { id: $id })\n ON MATCH\n SET flow.createdAt = $createdAt,\n flow.createdBy = $userId,\n flow.description = $description,\n flow.groupId = $groupId,\n flow.name = $name,\n flow.updatedAt = $updatedAt,\n flow.updatedBy = $userId\n ON CREATE\n SET flow.createdAt = $createdAt,\n flow.createdBy = $userId,\n flow.description = $description,\n flow.groupId = $groupId,\n flow.isActive = false,\n flow.name = $name,\n flow.updatedAt = $updatedAt,\n flow.updatedBy = $userId\n RETURN flow\n ", {
|
|
124
124
|
createdAt: flow.dateCreated,
|
|
125
125
|
description: flow.data.description,
|
|
126
126
|
groupId: flow.botId,
|
|
127
|
-
id:
|
|
127
|
+
id: id,
|
|
128
128
|
name: flow.data.label,
|
|
129
129
|
updatedAt: flow.dateModified,
|
|
130
130
|
userId: userId,
|
|
131
131
|
})];
|
|
132
132
|
case 4:
|
|
133
|
-
|
|
134
|
-
return [
|
|
133
|
+
_c.sent();
|
|
134
|
+
return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id })\n OPTIONAL MATCH (flow)-[channelRelations:IMPLEMENTS { isActive: false }]->(:CHANNEL)\n OPTIONAL MATCH (flow)-[skillRelations:IMPLEMENTS { isActive: false }]->(:SKILL)\n DELETE channelRelations, skillRelations\n ", { id: id })];
|
|
135
|
+
case 5:
|
|
136
|
+
_c.sent();
|
|
137
|
+
channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
|
|
138
|
+
skills = (_b = flow.data.meta.idw) === null || _b === void 0 ? void 0 : _b.skills;
|
|
139
|
+
if (!(channel !== undefined && channel.length !== 0)) return [3, 7];
|
|
140
|
+
return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id }),\n (channel:CHANNEL { id: $channel })\n MERGE (flow)-[relationship:IMPLEMENTS]->(channel)\n ON CREATE\n SET relationship.isActive = false\n ", {
|
|
141
|
+
channel: channel,
|
|
142
|
+
id: id,
|
|
143
|
+
})];
|
|
144
|
+
case 6:
|
|
145
|
+
_c.sent();
|
|
146
|
+
_c.label = 7;
|
|
147
|
+
case 7:
|
|
148
|
+
if (!(skills === null || skills === void 0 ? void 0 : skills.length)) return [3, 9];
|
|
149
|
+
return [4, this.createSkillRelation(skills, id)];
|
|
150
|
+
case 8:
|
|
151
|
+
_c.sent();
|
|
152
|
+
_c.label = 9;
|
|
153
|
+
case 9: return [2];
|
|
135
154
|
}
|
|
136
155
|
});
|
|
137
156
|
});
|
|
@@ -149,19 +168,48 @@ var IDW = (function (_super) {
|
|
|
149
168
|
});
|
|
150
169
|
};
|
|
151
170
|
IDW.prototype.activateFlow = function (flow) {
|
|
171
|
+
var _a, _b;
|
|
152
172
|
return __awaiter(this, void 0, void 0, function () {
|
|
153
|
-
var id;
|
|
154
|
-
return __generator(this, function (
|
|
155
|
-
switch (
|
|
173
|
+
var id, channel, skills;
|
|
174
|
+
return __generator(this, function (_c) {
|
|
175
|
+
switch (_c.label) {
|
|
156
176
|
case 0:
|
|
157
177
|
id = flow.id;
|
|
158
178
|
if (id === undefined) {
|
|
159
179
|
throw new Error('Only flows with id can be added to the IDW graph');
|
|
160
180
|
}
|
|
161
|
-
return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id })\n SET flow.
|
|
181
|
+
return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id })\n OPTIONAL MATCH (flow)-[channelRelations:IMPLEMENTS]->(:CHANNEL)\n OPTIONAL MATCH (flow)-[skillRelations:IMPLEMENTS]->(:SKILL)\n DELETE channelRelations, skillRelations\n SET flow.activatedAt = $activatedAt,\n flow.isActive = true\n ", {
|
|
162
182
|
activatedAt: Date.now(),
|
|
163
183
|
id: id,
|
|
164
184
|
})];
|
|
185
|
+
case 1:
|
|
186
|
+
_c.sent();
|
|
187
|
+
channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
|
|
188
|
+
skills = (_b = flow.data.meta.idw) === null || _b === void 0 ? void 0 : _b.skills;
|
|
189
|
+
if (!(channel !== undefined && channel.length !== 0)) return [3, 3];
|
|
190
|
+
return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id }),\n (channel:CHANNEL { id: $channel })\n MERGE (flow)-[relationship:IMPLEMENTS]->(channel)\n SET relationship.isActive = true\n ", {
|
|
191
|
+
channel: channel,
|
|
192
|
+
id: id,
|
|
193
|
+
})];
|
|
194
|
+
case 2:
|
|
195
|
+
_c.sent();
|
|
196
|
+
_c.label = 3;
|
|
197
|
+
case 3:
|
|
198
|
+
if (!(skills === null || skills === void 0 ? void 0 : skills.length)) return [3, 5];
|
|
199
|
+
return [4, this.createSkillRelation(skills, id)];
|
|
200
|
+
case 4:
|
|
201
|
+
_c.sent();
|
|
202
|
+
_c.label = 5;
|
|
203
|
+
case 5: return [2];
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
IDW.prototype.deactivateFlow = function (id) {
|
|
209
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
210
|
+
return __generator(this, function (_a) {
|
|
211
|
+
switch (_a.label) {
|
|
212
|
+
case 0: return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id })\n OPTIONAL MATCH (flow)-[relationships:IMPLEMENTS]->(:CHANNEL)\n SET flow.isActive = false,\n relationships.isActive = false\n REMOVE flow.activatedAt\n RETURN flow\n ", { id: id })];
|
|
165
213
|
case 1:
|
|
166
214
|
_a.sent();
|
|
167
215
|
return [2];
|
|
@@ -169,11 +217,16 @@ var IDW = (function (_super) {
|
|
|
169
217
|
});
|
|
170
218
|
});
|
|
171
219
|
};
|
|
172
|
-
IDW.prototype.
|
|
220
|
+
IDW.prototype.createSkillRelation = function (skillIds, flowId) {
|
|
173
221
|
return __awaiter(this, void 0, void 0, function () {
|
|
222
|
+
var preparedIds;
|
|
174
223
|
return __generator(this, function (_a) {
|
|
175
224
|
switch (_a.label) {
|
|
176
|
-
case 0:
|
|
225
|
+
case 0:
|
|
226
|
+
preparedIds = skillIds.map(function (id) { return "'".concat(id, "'"); });
|
|
227
|
+
return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id }), (skill:SKILL)\n WHERE skill.id in [".concat(preparedIds, "]\n MERGE (flow)-[:IMPLEMENTS]->(skill)\n return skill, flow\n "), {
|
|
228
|
+
id: flowId,
|
|
229
|
+
})];
|
|
177
230
|
case 1:
|
|
178
231
|
_a.sent();
|
|
179
232
|
return [2];
|
|
@@ -181,34 +234,40 @@ var IDW = (function (_super) {
|
|
|
181
234
|
});
|
|
182
235
|
});
|
|
183
236
|
};
|
|
237
|
+
IDW.prototype.getSkillsList = function () {
|
|
238
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
239
|
+
var data;
|
|
240
|
+
return __generator(this, function (_a) {
|
|
241
|
+
switch (_a.label) {
|
|
242
|
+
case 0: return [4, this.graphQuery("\n MATCH (skills:SKILL)\n RETURN skills\n ", {})];
|
|
243
|
+
case 1:
|
|
244
|
+
data = _a.sent();
|
|
245
|
+
return [2, (data !== null && data !== void 0 ? data : []).map(function (row) { return row.properties; })];
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
};
|
|
184
250
|
IDW.prototype.graphQuery = function (query, params) {
|
|
185
251
|
return __awaiter(this, void 0, void 0, function () {
|
|
186
|
-
var e_2
|
|
252
|
+
var e_2;
|
|
187
253
|
return __generator(this, function (_a) {
|
|
188
254
|
switch (_a.label) {
|
|
189
|
-
case 0:
|
|
190
|
-
_a.trys.push([0, 2, , 3]);
|
|
191
|
-
return [4, this.checkOrCreateDb()];
|
|
255
|
+
case 0: return [4, this.checkOrCreateDb()];
|
|
192
256
|
case 1:
|
|
193
257
|
_a.sent();
|
|
194
|
-
|
|
258
|
+
_a.label = 2;
|
|
195
259
|
case 2:
|
|
196
|
-
|
|
197
|
-
console.warn(e_2);
|
|
198
|
-
return [3, 3];
|
|
199
|
-
case 3:
|
|
200
|
-
_a.trys.push([3, 5, , 6]);
|
|
260
|
+
_a.trys.push([2, 4, , 5]);
|
|
201
261
|
return [4, this.graphApi.query({
|
|
202
262
|
graph: constants_1.GRAPH_NAME,
|
|
203
263
|
params: params,
|
|
204
264
|
query: query,
|
|
205
265
|
})];
|
|
206
|
-
case
|
|
207
|
-
case
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
case 6: return [2];
|
|
266
|
+
case 3: return [2, _a.sent()];
|
|
267
|
+
case 4:
|
|
268
|
+
e_2 = _a.sent();
|
|
269
|
+
return [3, 5];
|
|
270
|
+
case 5: return [2];
|
|
212
271
|
}
|
|
213
272
|
});
|
|
214
273
|
});
|
package/dist/cjs/idw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idw.js","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoC;AAEpC,uCAAuC;AACvC,uCAAsC;AACtC,yCAAsD;AAUtD;IAAyB,uBAAI;IAe3B,aAAY,MAAiB;QAA7B,iBA4BC;QA1BG,IAAA,SAAS,GAKP,MAAM,UALC,EACT,YAAY,GAIV,MAAM,aAJI,EACZ,QAAQ,GAGN,MAAM,SAHA,EACR,SAAS,GAEP,MAAM,UAFC,EACT,KAAK,GACH,MAAM,MADH,CACI;gBAEX,kBAAM;YACJ,SAAS,WAAA;YACT,YAAY,cAAA;YACZ,UAAU,EAAE,uBAAW;YACvB,KAAK,OAAA;SACN,CAAC;QAEF,KAAI,CAAC,QAAQ,GAAG,IAAI,cAAM,CAAC;YACzB,SAAS,WAAA;YACT,YAAY,cAAA;YACZ,QAAQ,UAAA;YACR,KAAK,OAAA;SACN,CAAC,CAAC;QACH,KAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC;YACrB,SAAS,WAAA;YACT,KAAK,OAAA;YACL,YAAY,cAAA;YACZ,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;;IACL,CAAC;IAEK,6BAAe,GAArB;;;;;;;wBAEI,WAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAU,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;;;;wBAE7C,WAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"idw.js","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/idw.js
CHANGED
|
@@ -39,19 +39,19 @@ export class IDW extends Base {
|
|
|
39
39
|
yield this.graphApi.getGraphInfo(GRAPH_NAME);
|
|
40
40
|
}
|
|
41
41
|
catch (e) {
|
|
42
|
-
yield this.graphApi.createGraph({
|
|
43
|
-
name: GRAPH_NAME,
|
|
44
|
-
});
|
|
42
|
+
yield this.graphApi.createGraph({ name: GRAPH_NAME });
|
|
45
43
|
}
|
|
46
44
|
});
|
|
47
45
|
}
|
|
48
46
|
createOrUpdateFlow(flow) {
|
|
47
|
+
var _a, _b;
|
|
49
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
|
|
49
|
+
const id = flow.id;
|
|
50
|
+
if (id === undefined) {
|
|
51
51
|
throw new Error('Only flows with id can be added to the IDW graph');
|
|
52
52
|
}
|
|
53
53
|
if (flow.isDeleted) {
|
|
54
|
-
return yield this.deleteFlow(
|
|
54
|
+
return yield this.deleteFlow(id);
|
|
55
55
|
}
|
|
56
56
|
const { userId } = yield this.users.getCurrentUser();
|
|
57
57
|
yield this.graphQuery(`
|
|
@@ -78,11 +78,34 @@ export class IDW extends Base {
|
|
|
78
78
|
createdAt: flow.dateCreated,
|
|
79
79
|
description: flow.data.description,
|
|
80
80
|
groupId: flow.botId,
|
|
81
|
-
id
|
|
81
|
+
id,
|
|
82
82
|
name: flow.data.label,
|
|
83
83
|
updatedAt: flow.dateModified,
|
|
84
84
|
userId,
|
|
85
85
|
});
|
|
86
|
+
yield this.graphQuery(`
|
|
87
|
+
MATCH (flow:FLOW { id: $id })
|
|
88
|
+
OPTIONAL MATCH (flow)-[channelRelations:IMPLEMENTS { isActive: false }]->(:CHANNEL)
|
|
89
|
+
OPTIONAL MATCH (flow)-[skillRelations:IMPLEMENTS { isActive: false }]->(:SKILL)
|
|
90
|
+
DELETE channelRelations, skillRelations
|
|
91
|
+
`, { id });
|
|
92
|
+
const channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
|
|
93
|
+
const skills = (_b = flow.data.meta.idw) === null || _b === void 0 ? void 0 : _b.skills;
|
|
94
|
+
if (channel !== undefined && channel.length !== 0) {
|
|
95
|
+
yield this.graphQuery(`
|
|
96
|
+
MATCH (flow:FLOW { id: $id }),
|
|
97
|
+
(channel:CHANNEL { id: $channel })
|
|
98
|
+
MERGE (flow)-[relationship:IMPLEMENTS]->(channel)
|
|
99
|
+
ON CREATE
|
|
100
|
+
SET relationship.isActive = false
|
|
101
|
+
`, {
|
|
102
|
+
channel,
|
|
103
|
+
id,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
if (skills === null || skills === void 0 ? void 0 : skills.length) {
|
|
107
|
+
yield this.createSkillRelation(skills, id);
|
|
108
|
+
}
|
|
86
109
|
});
|
|
87
110
|
}
|
|
88
111
|
deleteFlow(id) {
|
|
@@ -94,6 +117,7 @@ export class IDW extends Base {
|
|
|
94
117
|
});
|
|
95
118
|
}
|
|
96
119
|
activateFlow(flow) {
|
|
120
|
+
var _a, _b;
|
|
97
121
|
return __awaiter(this, void 0, void 0, function* () {
|
|
98
122
|
const id = flow.id;
|
|
99
123
|
if (id === undefined) {
|
|
@@ -101,33 +125,70 @@ export class IDW extends Base {
|
|
|
101
125
|
}
|
|
102
126
|
yield this.graphQuery(`
|
|
103
127
|
MATCH (flow:FLOW { id: $id })
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
128
|
+
OPTIONAL MATCH (flow)-[channelRelations:IMPLEMENTS]->(:CHANNEL)
|
|
129
|
+
OPTIONAL MATCH (flow)-[skillRelations:IMPLEMENTS]->(:SKILL)
|
|
130
|
+
DELETE channelRelations, skillRelations
|
|
131
|
+
SET flow.activatedAt = $activatedAt,
|
|
132
|
+
flow.isActive = true
|
|
107
133
|
`, {
|
|
108
134
|
activatedAt: Date.now(),
|
|
109
135
|
id,
|
|
110
136
|
});
|
|
137
|
+
const channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
|
|
138
|
+
const skills = (_b = flow.data.meta.idw) === null || _b === void 0 ? void 0 : _b.skills;
|
|
139
|
+
if (channel !== undefined && channel.length !== 0) {
|
|
140
|
+
yield this.graphQuery(`
|
|
141
|
+
MATCH (flow:FLOW { id: $id }),
|
|
142
|
+
(channel:CHANNEL { id: $channel })
|
|
143
|
+
MERGE (flow)-[relationship:IMPLEMENTS]->(channel)
|
|
144
|
+
SET relationship.isActive = true
|
|
145
|
+
`, {
|
|
146
|
+
channel,
|
|
147
|
+
id,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (skills === null || skills === void 0 ? void 0 : skills.length) {
|
|
151
|
+
yield this.createSkillRelation(skills, id);
|
|
152
|
+
}
|
|
111
153
|
});
|
|
112
154
|
}
|
|
113
155
|
deactivateFlow(id) {
|
|
114
156
|
return __awaiter(this, void 0, void 0, function* () {
|
|
115
157
|
yield this.graphQuery(`
|
|
116
|
-
MATCH (flow:FLOW { id: $id }
|
|
117
|
-
|
|
158
|
+
MATCH (flow:FLOW { id: $id })
|
|
159
|
+
OPTIONAL MATCH (flow)-[relationships:IMPLEMENTS]->(:CHANNEL)
|
|
160
|
+
SET flow.isActive = false,
|
|
161
|
+
relationships.isActive = false
|
|
118
162
|
REMOVE flow.activatedAt
|
|
119
163
|
RETURN flow
|
|
120
164
|
`, { id });
|
|
121
165
|
});
|
|
122
166
|
}
|
|
167
|
+
createSkillRelation(skillIds, flowId) {
|
|
168
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
const preparedIds = skillIds.map(id => `'${id}'`);
|
|
170
|
+
yield this.graphQuery(`
|
|
171
|
+
MATCH (flow:FLOW { id: $id }), (skill:SKILL)
|
|
172
|
+
WHERE skill.id in [${preparedIds}]
|
|
173
|
+
MERGE (flow)-[:IMPLEMENTS]->(skill)
|
|
174
|
+
return skill, flow
|
|
175
|
+
`, {
|
|
176
|
+
id: flowId,
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
getSkillsList() {
|
|
181
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
const data = yield this.graphQuery(`
|
|
183
|
+
MATCH (skills:SKILL)
|
|
184
|
+
RETURN skills
|
|
185
|
+
`, {});
|
|
186
|
+
return (data !== null && data !== void 0 ? data : []).map(row => row.properties);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
123
189
|
graphQuery(query, params) {
|
|
124
190
|
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
-
|
|
126
|
-
yield this.checkOrCreateDb();
|
|
127
|
-
}
|
|
128
|
-
catch (e) {
|
|
129
|
-
console.warn(e);
|
|
130
|
-
}
|
|
191
|
+
yield this.checkOrCreateDb();
|
|
131
192
|
try {
|
|
132
193
|
return yield this.graphApi.query({
|
|
133
194
|
graph: GRAPH_NAME,
|
|
@@ -136,7 +197,6 @@ export class IDW extends Base {
|
|
|
136
197
|
});
|
|
137
198
|
}
|
|
138
199
|
catch (e) {
|
|
139
|
-
console.warn(e);
|
|
140
200
|
}
|
|
141
201
|
});
|
|
142
202
|
}
|
package/dist/esm/idw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idw.js","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAUtD,MAAM,OAAO,GAAI,SAAQ,IAAI;IAe3B,YAAY,MAAiB;QAC3B,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,KAAK,GACN,GAAG,MAAM,CAAC;QAEX,KAAK,CAAC;YACJ,SAAS;YACT,YAAY;YACZ,UAAU,EAAE,WAAW;YACvB,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC;YACzB,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;YACrB,SAAS;YACT,KAAK;YACL,YAAY;YACZ,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IAEK,eAAe;;YACnB,IAAI;gBACF,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;aAC9C;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"idw.js","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":"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"}
|
package/dist/types/idw.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Base } from '@or-sdk/base';
|
|
2
2
|
import { Flow } from '@or-sdk/deployer';
|
|
3
|
-
import { IDWConfig } from './types';
|
|
3
|
+
import { IDWConfig, SimpleNode } from './types';
|
|
4
4
|
export declare class IDW extends Base {
|
|
5
5
|
private readonly graphApi;
|
|
6
6
|
private readonly users;
|
|
@@ -10,6 +10,8 @@ export declare class IDW extends Base {
|
|
|
10
10
|
deleteFlow(id: string): Promise<void>;
|
|
11
11
|
activateFlow(flow: Flow): Promise<void>;
|
|
12
12
|
deactivateFlow(id: string): Promise<void>;
|
|
13
|
+
private createSkillRelation;
|
|
14
|
+
getSkillsList(): Promise<SimpleNode[]>;
|
|
13
15
|
private graphQuery;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=idw.d.ts.map
|
package/dist/types/idw.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idw.d.ts","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIxC,OAAO,
|
|
1
|
+
{"version":3,"file":"idw.d.ts","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIxC,OAAO,EAAyB,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AASvE,qBAAa,GAAI,SAAQ,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAalB,MAAM,EAAE,SAAS;IA8BvB,eAAe;IAQf,kBAAkB,CAAC,IAAI,EAAE,IAAI;IAqE7B,UAAU,CAAC,EAAE,EAAE,MAAM;IAOrB,YAAY,CAAC,IAAI,EAAE,IAAI;IAqCvB,cAAc,CAAC,EAAE,EAAE,MAAM;YAYjB,mBAAmB;IAY3B,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAQ9B,UAAU;CAczB"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -6,4 +6,15 @@ export type IDWConfig = {
|
|
|
6
6
|
sdkApiUrl?: string;
|
|
7
7
|
token: Token;
|
|
8
8
|
};
|
|
9
|
+
export interface SimpleNode {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface GraphEntityProperties<T> {
|
|
16
|
+
id: number;
|
|
17
|
+
labels: string[];
|
|
18
|
+
properties: T;
|
|
19
|
+
}
|
|
9
20
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,MAAM,SAAS,GAAG;IAItB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,MAAM,SAAS,GAAG;IAItB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC,CAAC;CACf"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.1.0-beta.
|
|
2
|
+
"version": "1.1.0-beta.1304.0",
|
|
3
3
|
"name": "@or-sdk/idw",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@or-sdk/base": "^0.28.1",
|
|
28
|
-
"@or-sdk/deployer": "^1.
|
|
28
|
+
"@or-sdk/deployer": "^1.2.0-beta.1304.0",
|
|
29
29
|
"@or-sdk/graph": "^1.3.1",
|
|
30
30
|
"@or-sdk/users": "^0.30.0"
|
|
31
31
|
}
|
package/src/idw.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Flow } from '@or-sdk/deployer';
|
|
|
3
3
|
import { Graphs } from '@or-sdk/graph';
|
|
4
4
|
import { Users } from '@or-sdk/users';
|
|
5
5
|
import { GRAPH_NAME, SERVICE_KEY } from './constants';
|
|
6
|
-
import { IDWConfig } from './types';
|
|
6
|
+
import { GraphEntityProperties, IDWConfig, SimpleNode } from './types';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* OneReach IDW service client
|
|
@@ -61,19 +61,18 @@ export class IDW extends Base {
|
|
|
61
61
|
try {
|
|
62
62
|
await this.graphApi.getGraphInfo(GRAPH_NAME);
|
|
63
63
|
} catch (e) {
|
|
64
|
-
await this.graphApi.createGraph({
|
|
65
|
-
name: GRAPH_NAME,
|
|
66
|
-
});
|
|
64
|
+
await this.graphApi.createGraph({ name: GRAPH_NAME });
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
67
|
|
|
70
68
|
async createOrUpdateFlow(flow: Flow) {
|
|
71
|
-
|
|
69
|
+
const id = flow.id;
|
|
70
|
+
if (id === undefined) {
|
|
72
71
|
throw new Error('Only flows with id can be added to the IDW graph');
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
if (flow.isDeleted) {
|
|
76
|
-
return await this.deleteFlow(
|
|
75
|
+
return await this.deleteFlow(id);
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
const { userId } = await this.users.getCurrentUser();
|
|
@@ -98,75 +97,42 @@ export class IDW extends Base {
|
|
|
98
97
|
flow.updatedAt = $updatedAt,
|
|
99
98
|
flow.updatedBy = $userId
|
|
100
99
|
RETURN flow
|
|
101
|
-
`,
|
|
102
|
-
{
|
|
100
|
+
`, {
|
|
103
101
|
createdAt: flow.dateCreated,
|
|
104
102
|
description: flow.data.description,
|
|
105
103
|
groupId: flow.botId,
|
|
106
|
-
id
|
|
104
|
+
id,
|
|
107
105
|
name: flow.data.label,
|
|
108
106
|
updatedAt: flow.dateModified,
|
|
109
107
|
userId,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
await this.graphQuery(`
|
|
111
|
+
MATCH (flow:FLOW { id: $id })
|
|
112
|
+
OPTIONAL MATCH (flow)-[channelRelations:IMPLEMENTS { isActive: false }]->(:CHANNEL)
|
|
113
|
+
OPTIONAL MATCH (flow)-[skillRelations:IMPLEMENTS { isActive: false }]->(:SKILL)
|
|
114
|
+
DELETE channelRelations, skillRelations
|
|
115
|
+
`, { id });
|
|
116
|
+
|
|
117
|
+
const channel = flow.data.meta.idw?.channel;
|
|
118
|
+
const skills = flow.data.meta.idw?.skills;
|
|
119
|
+
if (channel !== undefined && channel.length !== 0) {
|
|
120
|
+
await this.graphQuery(`
|
|
121
|
+
MATCH (flow:FLOW { id: $id }),
|
|
122
|
+
(channel:CHANNEL { id: $channel })
|
|
123
|
+
MERGE (flow)-[relationship:IMPLEMENTS]->(channel)
|
|
124
|
+
ON CREATE
|
|
125
|
+
SET relationship.isActive = false
|
|
126
|
+
`, {
|
|
127
|
+
channel,
|
|
128
|
+
id,
|
|
129
|
+
});
|
|
110
130
|
}
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
// const channel = flow.data.meta.idw?.channel;
|
|
114
|
-
// if (channel !== undefined) {
|
|
115
|
-
// const _channel = await this.getChannel(channel);
|
|
116
|
-
// if (channel !== undefined && _.isEmpty(_channel)) return;
|
|
117
|
-
// // TODO: ON MATCH DELETE [:IMPLEMENTS] relationship with channel node's { id != $channel }
|
|
118
|
-
// await this.deleteRelationship(flow.id, channel);
|
|
119
|
-
// // TODO: create :IMPLEMENTS relationship with channel node { id: $channel }
|
|
120
|
-
// await this.createRelationship(flow.id, channel);
|
|
121
|
-
// } else {
|
|
122
|
-
// // TODO: ON MATCH DELETE [:IMPLEMENTS] relationship with channel nodes
|
|
123
|
-
// await this.deleteAllRelationship(flow.id);
|
|
124
|
-
// }
|
|
125
|
-
}
|
|
126
131
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
// { channel });
|
|
132
|
-
// }
|
|
133
|
-
|
|
134
|
-
// async getActivatedFlow(channel: string) {
|
|
135
|
-
// return await this.graphQuery(`
|
|
136
|
-
// MATCH (flow:FLOW { isActive: true })-[:IMPLEMENTS]-(:CHANNEL { channel: $channel })
|
|
137
|
-
// RETURN flow`,
|
|
138
|
-
// { channel });
|
|
139
|
-
// }
|
|
140
|
-
|
|
141
|
-
// async deleteRelationship(id: string, channel = '') {
|
|
142
|
-
// await this.graphQuery(`
|
|
143
|
-
// MATCH (:FLOW {id: $id})-[r:IMPLEMENTS]->(:CHANNEL {id: $channel})
|
|
144
|
-
// DELETE r
|
|
145
|
-
// `, {
|
|
146
|
-
// id,
|
|
147
|
-
// channel,
|
|
148
|
-
// });
|
|
149
|
-
// }
|
|
150
|
-
|
|
151
|
-
// async deleteAllRelationship(id: string, channel = '') {
|
|
152
|
-
// await this.graphQuery(`
|
|
153
|
-
// MATCH (:FLOW {id: $id})-[r:IMPLEMENTS]->(:CHANNEL)
|
|
154
|
-
// DELETE r
|
|
155
|
-
// `, {
|
|
156
|
-
// id,
|
|
157
|
-
// channel,
|
|
158
|
-
// });
|
|
159
|
-
// }
|
|
160
|
-
|
|
161
|
-
// async createRelationship(id: string, channel: string) {
|
|
162
|
-
// await this.graphQuery(`
|
|
163
|
-
// MATCH (f:FLOW {id: $id}), (c:CHANNEL {id: $channel})
|
|
164
|
-
// MERGE (f)-[:IMPLEMENTS]->(c)
|
|
165
|
-
// `, {
|
|
166
|
-
// id,
|
|
167
|
-
// channel,
|
|
168
|
-
// });
|
|
169
|
-
// }
|
|
132
|
+
if (skills?.length) {
|
|
133
|
+
await this.createSkillRelation(skills, id);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
170
136
|
|
|
171
137
|
async deleteFlow(id: string) {
|
|
172
138
|
await this.graphQuery(`
|
|
@@ -181,53 +147,80 @@ export class IDW extends Base {
|
|
|
181
147
|
throw new Error('Only flows with id can be added to the IDW graph');
|
|
182
148
|
}
|
|
183
149
|
|
|
184
|
-
// const channel = flow.data.meta?.idw?.channel;
|
|
185
|
-
// if (channel != undefined) {
|
|
186
|
-
// // TODO: only throw if a (:FLOW { isActive: true })-[:IMPLEMENTS]-(:CHANNEL { channel: $channel })
|
|
187
|
-
// const activatedFlow = await this.getActivatedFlow(channel);
|
|
188
|
-
// if (activatedFlow && activatedFlow.length > 0) {
|
|
189
|
-
// throw new Error(`Cannot activate second flow for channel ${channel}`);
|
|
190
|
-
// }
|
|
191
|
-
// }
|
|
192
|
-
|
|
193
150
|
await this.graphQuery(`
|
|
194
151
|
MATCH (flow:FLOW { id: $id })
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
152
|
+
OPTIONAL MATCH (flow)-[channelRelations:IMPLEMENTS]->(:CHANNEL)
|
|
153
|
+
OPTIONAL MATCH (flow)-[skillRelations:IMPLEMENTS]->(:SKILL)
|
|
154
|
+
DELETE channelRelations, skillRelations
|
|
155
|
+
SET flow.activatedAt = $activatedAt,
|
|
156
|
+
flow.isActive = true
|
|
198
157
|
`, {
|
|
199
158
|
activatedAt: Date.now(),
|
|
200
159
|
id,
|
|
201
160
|
});
|
|
202
|
-
}
|
|
203
161
|
|
|
162
|
+
const channel = flow.data.meta.idw?.channel;
|
|
163
|
+
const skills = flow.data.meta.idw?.skills;
|
|
164
|
+
if (channel !== undefined && channel.length !== 0) {
|
|
165
|
+
await this.graphQuery(`
|
|
166
|
+
MATCH (flow:FLOW { id: $id }),
|
|
167
|
+
(channel:CHANNEL { id: $channel })
|
|
168
|
+
MERGE (flow)-[relationship:IMPLEMENTS]->(channel)
|
|
169
|
+
SET relationship.isActive = true
|
|
170
|
+
`, {
|
|
171
|
+
channel,
|
|
172
|
+
id,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (skills?.length) {
|
|
177
|
+
await this.createSkillRelation(skills, id);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
204
180
|
|
|
205
181
|
async deactivateFlow(id: string) {
|
|
206
182
|
await this.graphQuery(`
|
|
207
|
-
MATCH (flow:FLOW { id: $id }
|
|
208
|
-
|
|
183
|
+
MATCH (flow:FLOW { id: $id })
|
|
184
|
+
OPTIONAL MATCH (flow)-[relationships:IMPLEMENTS]->(:CHANNEL)
|
|
185
|
+
SET flow.isActive = false,
|
|
186
|
+
relationships.isActive = false
|
|
209
187
|
REMOVE flow.activatedAt
|
|
210
188
|
RETURN flow
|
|
211
189
|
`, { id });
|
|
212
190
|
}
|
|
213
191
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
192
|
+
|
|
193
|
+
private async createSkillRelation(skillIds: string[], flowId: string) {
|
|
194
|
+
const preparedIds = skillIds.map(id => `'${id}'`);
|
|
195
|
+
await this.graphQuery(`
|
|
196
|
+
MATCH (flow:FLOW { id: $id }), (skill:SKILL)
|
|
197
|
+
WHERE skill.id in [${preparedIds}]
|
|
198
|
+
MERGE (flow)-[:IMPLEMENTS]->(skill)
|
|
199
|
+
return skill, flow
|
|
200
|
+
`, {
|
|
201
|
+
id: flowId,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
async getSkillsList(): Promise<SimpleNode[]> {
|
|
206
|
+
const data = await this.graphQuery<GraphEntityProperties<SimpleNode>>(`
|
|
207
|
+
MATCH (skills:SKILL)
|
|
208
|
+
RETURN skills
|
|
209
|
+
`, {});
|
|
210
|
+
return (data ?? []).map(row => row.properties);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
private async graphQuery<T>(query: string, params?: Record<string, null | number | string | boolean>) {
|
|
214
|
+
// if 'idw' graph doesn't exist - create it
|
|
215
|
+
await this.checkOrCreateDb();
|
|
222
216
|
|
|
223
217
|
try {
|
|
224
|
-
return await this.graphApi.query({
|
|
218
|
+
return await this.graphApi.query<T>({
|
|
225
219
|
graph: GRAPH_NAME,
|
|
226
220
|
params,
|
|
227
221
|
query,
|
|
228
222
|
});
|
|
229
223
|
} catch (e) {
|
|
230
|
-
console.warn(e);
|
|
231
224
|
// TODO: handle errors 🤔
|
|
232
225
|
}
|
|
233
226
|
}
|
package/src/types.ts
CHANGED
|
@@ -26,3 +26,17 @@ export type IDWConfig = {
|
|
|
26
26
|
*/
|
|
27
27
|
token: Token;
|
|
28
28
|
};
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
export interface SimpleNode {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
icon?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface GraphEntityProperties<T> {
|
|
39
|
+
id: number;
|
|
40
|
+
labels: string[];
|
|
41
|
+
properties: T;
|
|
42
|
+
}
|