@or-sdk/idw 1.1.0-beta.1287.0 → 1.1.0-beta.1291.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 CHANGED
@@ -50,12 +50,16 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
50
50
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
51
  }
52
52
  };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
53
56
  Object.defineProperty(exports, "__esModule", { value: true });
54
57
  exports.IDW = void 0;
55
58
  var base_1 = require("@or-sdk/base");
56
59
  var graph_1 = require("@or-sdk/graph");
57
60
  var users_1 = require("@or-sdk/users");
58
61
  var constants_1 = require("./constants");
62
+ var lodash_1 = __importDefault(require("lodash"));
59
63
  var IDW = (function (_super) {
60
64
  __extends(IDW, _super);
61
65
  function IDW(params) {
@@ -81,21 +85,46 @@ var IDW = (function (_super) {
81
85
  });
82
86
  return _this;
83
87
  }
84
- IDW.prototype.createOrUpdateFlow = function (flow) {
88
+ IDW.prototype.checkOrCreateDb = function () {
85
89
  return __awaiter(this, void 0, void 0, function () {
86
- var userId;
90
+ var e_1;
87
91
  return __generator(this, function (_a) {
88
92
  switch (_a.label) {
93
+ case 0:
94
+ _a.trys.push([0, 2, , 4]);
95
+ return [4, this.graphApi.getGraphInfo(constants_1.GRAPH_NAME)];
96
+ case 1:
97
+ _a.sent();
98
+ return [3, 4];
99
+ case 2:
100
+ e_1 = _a.sent();
101
+ return [4, this.graphApi.createGraph({
102
+ name: constants_1.GRAPH_NAME,
103
+ })];
104
+ case 3:
105
+ _a.sent();
106
+ return [3, 4];
107
+ case 4: return [2];
108
+ }
109
+ });
110
+ });
111
+ };
112
+ IDW.prototype.createOrUpdateFlow = function (flow) {
113
+ var _a;
114
+ return __awaiter(this, void 0, void 0, function () {
115
+ var userId, channel;
116
+ return __generator(this, function (_b) {
117
+ switch (_b.label) {
89
118
  case 0:
90
119
  if (flow.id === undefined) {
91
120
  throw new Error('Only flows with id can be added to the IDW graph');
92
121
  }
93
122
  if (!flow.isDeleted) return [3, 2];
94
123
  return [4, this.deleteFlow(flow.id)];
95
- case 1: return [2, _a.sent()];
124
+ case 1: return [2, _b.sent()];
96
125
  case 2: return [4, this.users.getCurrentUser()];
97
126
  case 3:
98
- userId = (_a.sent()).userId;
127
+ userId = (_b.sent()).userId;
99
128
  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 ", {
100
129
  createdAt: flow.dateCreated,
101
130
  description: flow.data.description,
@@ -106,8 +135,22 @@ var IDW = (function (_super) {
106
135
  userId: userId,
107
136
  })];
108
137
  case 4:
109
- _a.sent();
110
- return [2];
138
+ _b.sent();
139
+ return [4, this.graphQuery("\n MATCH (flow:FLOW {id: $id})\n OPTIONAL MATCH (f)-[r:IMPLEMENTS {isActive: false}]->(:CHANNEL)\n DELETE r\n ", {
140
+ id: flow.id,
141
+ })];
142
+ case 5:
143
+ _b.sent();
144
+ channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
145
+ if (!(channel !== undefined && !lodash_1.default.isEmpty(channel))) return [3, 7];
146
+ return [4, this.graphQuery("\n MATCH (f:FLOW {id: $id}),\n (c:CHANNEL {id: $channel})\n MERGE (f)-[r:IMPLEMENTS]->(c)\n ON CREATE\n SET r.isActive = false\n ", {
147
+ channel: channel,
148
+ id: flow.id,
149
+ })];
150
+ case 6:
151
+ _b.sent();
152
+ _b.label = 7;
153
+ case 7: return [2];
111
154
  }
112
155
  });
113
156
  });
@@ -125,22 +168,32 @@ var IDW = (function (_super) {
125
168
  });
126
169
  };
127
170
  IDW.prototype.activateFlow = function (flow) {
171
+ var _a;
128
172
  return __awaiter(this, void 0, void 0, function () {
129
- var id;
130
- return __generator(this, function (_a) {
131
- switch (_a.label) {
173
+ var id, channel;
174
+ return __generator(this, function (_b) {
175
+ switch (_b.label) {
132
176
  case 0:
133
177
  id = flow.id;
134
178
  if (id === undefined) {
135
179
  throw new Error('Only flows with id can be added to the IDW graph');
136
180
  }
137
- return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id })\n SET flow.isActive = true,\n flow.activatedAt = $activatedAt\n RETURN flow\n ", {
138
- activatedAt: Date.now(),
181
+ return [4, this.graphQuery("\n MATCH (flow:FLOW {id: $id})\n OPTIONAL MATCH (f)-[r:IMPLEMENTS]->(:CHANNEL)\n DELETE r\n SET flow.isActive = true,\n flow.activatedAt = $activatedAt\n ", {
139
182
  id: id,
183
+ activatedAt: Date.now(),
140
184
  })];
141
185
  case 1:
142
- _a.sent();
143
- return [2];
186
+ _b.sent();
187
+ channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
188
+ if (!(channel !== undefined && !lodash_1.default.isEmpty(channel))) return [3, 3];
189
+ return [4, this.graphQuery("\n MATCH (flow:FLOW {id: $id}),\n (channel:CHANNEL {id: $channel})\n MERGE (flow)-[r:IMPLEMENTS]->(channel)\n ON CREATE\n SET r.isActive = true\n ", {
190
+ channel: channel,
191
+ id: id,
192
+ })];
193
+ case 2:
194
+ _b.sent();
195
+ _b.label = 3;
196
+ case 3: return [2];
144
197
  }
145
198
  });
146
199
  });
@@ -149,7 +202,7 @@ var IDW = (function (_super) {
149
202
  return __awaiter(this, void 0, void 0, function () {
150
203
  return __generator(this, function (_a) {
151
204
  switch (_a.label) {
152
- case 0: return [4, this.graphQuery("\n MATCH (flow:FLOW { id: $id } )\n SET flow.isActive = false\n REMOVE flow.activatedAt\n RETURN flow\n ", { id: id })];
205
+ case 0: return [4, this.graphQuery("\n MATCH (flow:FLOW {id: $id})\n OPTIONAL MATCH (flow)-[r:IMPLEMENTS]->(:CHANNEL)\n SET flow.isActive = false,\n r.isActive = false\n REMOVE flow.activatedAt\n RETURN flow\n ", { id: id })];
153
206
  case 1:
154
207
  _a.sent();
155
208
  return [2];
@@ -159,21 +212,25 @@ var IDW = (function (_super) {
159
212
  };
160
213
  IDW.prototype.graphQuery = function (query, params) {
161
214
  return __awaiter(this, void 0, void 0, function () {
162
- var e_1;
215
+ var e_2;
163
216
  return __generator(this, function (_a) {
164
217
  switch (_a.label) {
165
- case 0:
166
- _a.trys.push([0, 2, , 3]);
218
+ case 0: return [4, this.checkOrCreateDb()];
219
+ case 1:
220
+ _a.sent();
221
+ _a.label = 2;
222
+ case 2:
223
+ _a.trys.push([2, 4, , 5]);
167
224
  return [4, this.graphApi.query({
168
225
  graph: constants_1.GRAPH_NAME,
169
226
  params: params,
170
227
  query: query,
171
228
  })];
172
- case 1: return [2, _a.sent()];
173
- case 2:
174
- e_1 = _a.sent();
175
- return [3, 3];
176
- case 3: return [2];
229
+ case 3: return [2, _a.sent()];
230
+ case 4:
231
+ e_2 = _a.sent();
232
+ return [3, 5];
233
+ case 5: return [2];
177
234
  }
178
235
  });
179
236
  });
@@ -1 +1 @@
1
- {"version":3,"file":"idw.js","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idw.js","sourceRoot":"","sources":["../../src/idw.ts"],"names":[],"mappings":"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"}
package/dist/esm/idw.js CHANGED
@@ -11,6 +11,7 @@ import { Base } from '@or-sdk/base';
11
11
  import { Graphs } from '@or-sdk/graph';
12
12
  import { Users } from '@or-sdk/users';
13
13
  import { GRAPH_NAME, SERVICE_KEY } from './constants';
14
+ import _ from 'lodash';
14
15
  export class IDW extends Base {
15
16
  constructor(params) {
16
17
  const { accountId, discoveryUrl, graphUrl, sdkApiUrl, token, } = params;
@@ -33,7 +34,20 @@ export class IDW extends Base {
33
34
  sdkUrl: sdkApiUrl,
34
35
  });
35
36
  }
37
+ checkOrCreateDb() {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ try {
40
+ yield this.graphApi.getGraphInfo(GRAPH_NAME);
41
+ }
42
+ catch (e) {
43
+ yield this.graphApi.createGraph({
44
+ name: GRAPH_NAME,
45
+ });
46
+ }
47
+ });
48
+ }
36
49
  createOrUpdateFlow(flow) {
50
+ var _a;
37
51
  return __awaiter(this, void 0, void 0, function* () {
38
52
  if (flow.id === undefined) {
39
53
  throw new Error('Only flows with id can be added to the IDW graph');
@@ -71,6 +85,26 @@ export class IDW extends Base {
71
85
  updatedAt: flow.dateModified,
72
86
  userId,
73
87
  });
88
+ yield this.graphQuery(`
89
+ MATCH (flow:FLOW {id: $id})
90
+ OPTIONAL MATCH (f)-[r:IMPLEMENTS {isActive: false}]->(:CHANNEL)
91
+ DELETE r
92
+ `, {
93
+ id: flow.id,
94
+ });
95
+ const channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
96
+ if (channel !== undefined && !_.isEmpty(channel)) {
97
+ yield this.graphQuery(`
98
+ MATCH (f:FLOW {id: $id}),
99
+ (c:CHANNEL {id: $channel})
100
+ MERGE (f)-[r:IMPLEMENTS]->(c)
101
+ ON CREATE
102
+ SET r.isActive = false
103
+ `, {
104
+ channel,
105
+ id: flow.id,
106
+ });
107
+ }
74
108
  });
75
109
  }
76
110
  deleteFlow(id) {
@@ -82,34 +116,52 @@ export class IDW extends Base {
82
116
  });
83
117
  }
84
118
  activateFlow(flow) {
119
+ var _a;
85
120
  return __awaiter(this, void 0, void 0, function* () {
86
121
  const id = flow.id;
87
122
  if (id === undefined) {
88
123
  throw new Error('Only flows with id can be added to the IDW graph');
89
124
  }
90
125
  yield this.graphQuery(`
91
- MATCH (flow:FLOW { id: $id })
92
- SET flow.isActive = true,
93
- flow.activatedAt = $activatedAt
94
- RETURN flow
95
- `, {
96
- activatedAt: Date.now(),
126
+ MATCH (flow:FLOW {id: $id})
127
+ OPTIONAL MATCH (f)-[r:IMPLEMENTS]->(:CHANNEL)
128
+ DELETE r
129
+ SET flow.isActive = true,
130
+ flow.activatedAt = $activatedAt
131
+ `, {
97
132
  id,
133
+ activatedAt: Date.now(),
98
134
  });
135
+ const channel = (_a = flow.data.meta.idw) === null || _a === void 0 ? void 0 : _a.channel;
136
+ if (channel !== undefined && !_.isEmpty(channel)) {
137
+ yield this.graphQuery(`
138
+ MATCH (flow:FLOW {id: $id}),
139
+ (channel:CHANNEL {id: $channel})
140
+ MERGE (flow)-[r:IMPLEMENTS]->(channel)
141
+ ON CREATE
142
+ SET r.isActive = true
143
+ `, {
144
+ channel,
145
+ id,
146
+ });
147
+ }
99
148
  });
100
149
  }
101
150
  deactivateFlow(id) {
102
151
  return __awaiter(this, void 0, void 0, function* () {
103
152
  yield this.graphQuery(`
104
- MATCH (flow:FLOW { id: $id } )
105
- SET flow.isActive = false
106
- REMOVE flow.activatedAt
107
- RETURN flow
153
+ MATCH (flow:FLOW {id: $id})
154
+ OPTIONAL MATCH (flow)-[r:IMPLEMENTS]->(:CHANNEL)
155
+ SET flow.isActive = false,
156
+ r.isActive = false
157
+ REMOVE flow.activatedAt
158
+ RETURN flow
108
159
  `, { id });
109
160
  });
110
161
  }
111
162
  graphQuery(query, params) {
112
163
  return __awaiter(this, void 0, void 0, function* () {
164
+ yield this.checkOrCreateDb();
113
165
  try {
114
166
  return yield this.graphApi.query({
115
167
  graph: GRAPH_NAME,
@@ -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,kBAAkB,CAAC,IAAU;;YACjC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aACrE;YAED,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACvC;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAErD,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;KAoBrB,EACD;gBACE,SAAS,EAAE,IAAI,CAAC,WAAW;gBAC3B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACrB,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,MAAM;aACP,CACA,CAAC;QAcJ,CAAC;KAAA;IA8CK,UAAU,CAAC,EAAU;;YACzB,MAAM,IAAI,CAAC,UAAU,CAAC;;;KAGrB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACb,CAAC;KAAA;IAEK,YAAY,CAAC,IAAU;;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,EAAE,KAAK,SAAS,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aACrE;YAWD,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;KAKrB,EAAE;gBACD,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,EAAE;aACH,CAAC,CAAC;QACL,CAAC;KAAA;IAGK,cAAc,CAAC,EAAU;;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;KAKrB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACb,CAAC;KAAA;IAEa,UAAU,CAAC,KAAa,EAAE,MAAyD;;YAC/F,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC/B,KAAK,EAAE,UAAU;oBACjB,MAAM;oBACN,KAAK;iBACN,CAAC,CAAC;aACJ;YAAC,OAAO,CAAC,EAAE;aAGX;QACH,CAAC;KAAA;CACF"}
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;AAEtD,OAAO,CAAC,MAAM,QAAQ,CAAC;AASvB,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;oBAC9B,IAAI,EAAE,UAAU;iBACjB,CAAC,CAAC;aACJ;QACH,CAAC;KAAA;IAEK,kBAAkB,CAAC,IAAU;;;YACjC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aACrE;YAED,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACvC;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAErD,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;KAoBrB,EACD;gBACE,SAAS,EAAE,IAAI,CAAC,WAAW;gBAC3B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACrB,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,MAAM;aACP,CACA,CAAC;YAEF,MAAM,IAAI,CAAC,UAAU,CACnB;;;;OAIC,EACD;gBACE,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CACF,CAAC;YAEF,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,OAAO,CAAC;YAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAChD,MAAM,IAAI,CAAC,UAAU,CACnB;;;;;;SAMC,EAAE;oBACD,OAAO;oBACP,EAAE,EAAE,IAAI,CAAC,EAAE;iBACZ,CACF,CAAC;aACH;;KAYF;IAEK,UAAU,CAAC,EAAU;;YACzB,MAAM,IAAI,CAAC,UAAU,CAAC;;;KAGrB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACb,CAAC;KAAA;IAEK,YAAY,CAAC,IAAU;;;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,EAAE,KAAK,SAAS,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aACrE;YAED,MAAM,IAAI,CAAC,UAAU,CACnB;;;;;;OAMC,EACD;gBACE,EAAE;gBACF,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,CACF,CAAC;YAEF,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,OAAO,CAAC;YAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAChD,MAAM,IAAI,CAAC,UAAU,CACnB;;;;;;SAMC,EAAE;oBACD,OAAO;oBACP,EAAE;iBACH,CACF,CAAC;aACH;;KACF;IAGK,cAAc,CAAC,EAAU;;YAC7B,MAAM,IAAI,CAAC,UAAU,CACnB;;;;;;;KAOD,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACb,CAAC;KAAA;IAEa,UAAU,CAAC,KAAa,EAAE,MAAyD;;YAE/F,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC/B,KAAK,EAAE,UAAU;oBACjB,MAAM;oBACN,KAAK;iBACN,CAAC,CAAC;aACJ;YAAC,OAAO,CAAC,EAAE;aAEX;QACH,CAAC;KAAA;CACF"}
@@ -5,6 +5,7 @@ export declare class IDW extends Base {
5
5
  private readonly graphApi;
6
6
  private readonly users;
7
7
  constructor(params: IDWConfig);
8
+ checkOrCreateDb(): Promise<void>;
8
9
  createOrUpdateFlow(flow: Flow): Promise<void>;
9
10
  deleteFlow(id: string): Promise<void>;
10
11
  activateFlow(flow: Flow): Promise<void>;
@@ -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,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AASpC,qBAAa,GAAI,SAAQ,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAalB,MAAM,EAAE,SAAS;IA8BvB,kBAAkB,CAAC,IAAI,EAAE,IAAI;IAqG7B,UAAU,CAAC,EAAE,EAAE,MAAM;IAOrB,YAAY,CAAC,IAAI,EAAE,IAAI;IA2BvB,cAAc,CAAC,EAAE,EAAE,MAAM;YASjB,UAAU;CAYzB"}
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,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAUpC,qBAAa,GAAI,SAAQ,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAalB,MAAM,EAAE,SAAS;IA8BvB,eAAe;IAUf,kBAAkB,CAAC,IAAI,EAAE,IAAI;IAkF7B,UAAU,CAAC,EAAE,EAAE,MAAM;IAOrB,YAAY,CAAC,IAAI,EAAE,IAAI;IAsCvB,cAAc,CAAC,EAAE,EAAE,MAAM;YAYjB,UAAU;CAazB"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.0-beta.1287.0",
2
+ "version": "1.1.0-beta.1291.0",
3
3
  "name": "@or-sdk/idw",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
@@ -25,8 +25,9 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@or-sdk/base": "^0.28.1",
28
- "@or-sdk/deployer": "^1.1.1-beta.1287.0",
28
+ "@or-sdk/deployer": "^1.1.1-beta.1291.0",
29
29
  "@or-sdk/graph": "^1.3.1",
30
- "@or-sdk/users": "^0.30.0"
30
+ "@or-sdk/users": "^0.30.0",
31
+ "lodash": "^4.17.21"
31
32
  }
32
33
  }
package/src/idw.ts CHANGED
@@ -4,6 +4,7 @@ import { Graphs } from '@or-sdk/graph';
4
4
  import { Users } from '@or-sdk/users';
5
5
  import { GRAPH_NAME, SERVICE_KEY } from './constants';
6
6
  import { IDWConfig } from './types';
7
+ import _ from 'lodash';
7
8
 
8
9
  /**
9
10
  * OneReach IDW service client
@@ -57,6 +58,16 @@ export class IDW extends Base {
57
58
  });
58
59
  }
59
60
 
61
+ async checkOrCreateDb() {
62
+ try {
63
+ await this.graphApi.getGraphInfo(GRAPH_NAME);
64
+ } catch (e) {
65
+ await this.graphApi.createGraph({
66
+ name: GRAPH_NAME,
67
+ });
68
+ }
69
+ }
70
+
60
71
  async createOrUpdateFlow(flow: Flow) {
61
72
  if (flow.id === undefined) {
62
73
  throw new Error('Only flows with id can be added to the IDW graph');
@@ -100,7 +111,32 @@ export class IDW extends Base {
100
111
  }
101
112
  );
102
113
 
103
- // const channel = flow.data.meta.idw?.channel;
114
+ await this.graphQuery(
115
+ `
116
+ MATCH (flow:FLOW {id: $id})
117
+ OPTIONAL MATCH (f)-[r:IMPLEMENTS {isActive: false}]->(:CHANNEL)
118
+ DELETE r
119
+ `,
120
+ {
121
+ id: flow.id,
122
+ }
123
+ );
124
+
125
+ const channel = flow.data.meta.idw?.channel;
126
+ if (channel !== undefined && !_.isEmpty(channel)) {
127
+ await this.graphQuery(
128
+ `
129
+ MATCH (f:FLOW {id: $id}),
130
+ (c:CHANNEL {id: $channel})
131
+ MERGE (f)-[r:IMPLEMENTS]->(c)
132
+ ON CREATE
133
+ SET r.isActive = false
134
+ `, {
135
+ channel,
136
+ id: flow.id,
137
+ }
138
+ );
139
+ }
104
140
  // if (channel !== undefined) {
105
141
  // const _channel = await this.getChannel(channel);
106
142
  // if (channel !== undefined && _.isEmpty(_channel)) return;
@@ -114,50 +150,6 @@ export class IDW extends Base {
114
150
  // }
115
151
  }
116
152
 
117
- // async getChannel(channel: string) {
118
- // return await this.graphQuery(`
119
- // MATCH (channel: CHANNEL {id: $channel})
120
- // RETURN channel`,
121
- // { channel });
122
- // }
123
-
124
- // async getActivatedFlow(channel: string) {
125
- // return await this.graphQuery(`
126
- // MATCH (flow:FLOW { isActive: true })-[:IMPLEMENTS]-(:CHANNEL { channel: $channel })
127
- // RETURN flow`,
128
- // { channel });
129
- // }
130
-
131
- // async deleteRelationship(id: string, channel = '') {
132
- // await this.graphQuery(`
133
- // MATCH (:FLOW {id: $id})-[r:IMPLEMENTS]->(:CHANNEL {id: $channel})
134
- // DELETE r
135
- // `, {
136
- // id,
137
- // channel,
138
- // });
139
- // }
140
-
141
- // async deleteAllRelationship(id: string, channel = '') {
142
- // await this.graphQuery(`
143
- // MATCH (:FLOW {id: $id})-[r:IMPLEMENTS]->(:CHANNEL)
144
- // DELETE r
145
- // `, {
146
- // id,
147
- // channel,
148
- // });
149
- // }
150
-
151
- // async createRelationship(id: string, channel: string) {
152
- // await this.graphQuery(`
153
- // MATCH (f:FLOW {id: $id}), (c:CHANNEL {id: $channel})
154
- // MERGE (f)-[:IMPLEMENTS]->(c)
155
- // `, {
156
- // id,
157
- // channel,
158
- // });
159
- // }
160
-
161
153
  async deleteFlow(id: string) {
162
154
  await this.graphQuery(`
163
155
  MATCH (flow:FLOW { id: $id })
@@ -171,37 +163,53 @@ export class IDW extends Base {
171
163
  throw new Error('Only flows with id can be added to the IDW graph');
172
164
  }
173
165
 
174
- // const channel = flow.data.meta?.idw?.channel;
175
- // if (channel != undefined) {
176
- // // TODO: only throw if a (:FLOW { isActive: true })-[:IMPLEMENTS]-(:CHANNEL { channel: $channel })
177
- // const activatedFlow = await this.getActivatedFlow(channel);
178
- // if (activatedFlow && activatedFlow.length > 0) {
179
- // throw new Error(`Cannot activate second flow for channel ${channel}`);
180
- // }
181
- // }
166
+ await this.graphQuery(
167
+ `
168
+ MATCH (flow:FLOW {id: $id})
169
+ OPTIONAL MATCH (f)-[r:IMPLEMENTS]->(:CHANNEL)
170
+ DELETE r
171
+ SET flow.isActive = true,
172
+ flow.activatedAt = $activatedAt
173
+ `,
174
+ {
175
+ id,
176
+ activatedAt: Date.now(),
177
+ }
178
+ );
182
179
 
183
- await this.graphQuery(`
184
- MATCH (flow:FLOW { id: $id })
185
- SET flow.isActive = true,
186
- flow.activatedAt = $activatedAt
187
- RETURN flow
188
- `, {
189
- activatedAt: Date.now(),
190
- id,
191
- });
180
+ const channel = flow.data.meta.idw?.channel;
181
+ if (channel !== undefined && !_.isEmpty(channel)) {
182
+ await this.graphQuery(
183
+ `
184
+ MATCH (flow:FLOW {id: $id}),
185
+ (channel:CHANNEL {id: $channel})
186
+ MERGE (flow)-[r:IMPLEMENTS]->(channel)
187
+ ON CREATE
188
+ SET r.isActive = true
189
+ `, {
190
+ channel,
191
+ id,
192
+ }
193
+ );
194
+ }
192
195
  }
193
196
 
194
197
 
195
198
  async deactivateFlow(id: string) {
196
- await this.graphQuery(`
197
- MATCH (flow:FLOW { id: $id } )
198
- SET flow.isActive = false
199
- REMOVE flow.activatedAt
200
- RETURN flow
199
+ await this.graphQuery(
200
+ `
201
+ MATCH (flow:FLOW {id: $id})
202
+ OPTIONAL MATCH (flow)-[r:IMPLEMENTS]->(:CHANNEL)
203
+ SET flow.isActive = false,
204
+ r.isActive = false
205
+ REMOVE flow.activatedAt
206
+ RETURN flow
201
207
  `, { id });
202
208
  }
203
209
 
204
210
  private async graphQuery(query: string, params?: Record<string, null | number | string | boolean>) {
211
+ //create graph if not exists
212
+ await this.checkOrCreateDb();
205
213
  try {
206
214
  return await this.graphApi.query({
207
215
  graph: GRAPH_NAME,
@@ -209,7 +217,6 @@ export class IDW extends Base {
209
217
  query,
210
218
  });
211
219
  } catch (e) {
212
-
213
220
  // TODO: if 'idw' graph doesn't exist - create it, seed with channels data, and retry query
214
221
  }
215
222
  }