dbm-graph-api 1.1.4 → 1.1.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm-graph-api",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -13,7 +13,7 @@
13
13
  "dependencies": {
14
14
  "@aws-sdk/client-s3": "^3.741.0",
15
15
  "@aws-sdk/s3-request-presigner": "^3.741.0",
16
- "dbm": "^1.1.3",
16
+ "dbm": "^1.1.4",
17
17
  "ws": "^8.18.0"
18
18
  },
19
19
  "optionalDependencies": {
@@ -130,6 +130,9 @@ export default class UrlRequest extends Dbm.core.BaseObject {
130
130
  if(dataFunctionItem) {
131
131
  returnData = await dataFunctionItem.controller.getData(aData, encodeSession);
132
132
  }
133
+ else {
134
+ this._logs.push("No function named " + aFunctionName);
135
+ }
133
136
 
134
137
  this._responseData = returnData;
135
138
  }
@@ -230,7 +233,7 @@ export default class UrlRequest extends Dbm.core.BaseObject {
230
233
  let user = await this.getUser();
231
234
 
232
235
  if(!user) {
233
- throw("Only signed in users can use this endpoint");
236
+ throw(new Error("Only signed in users can use this endpoint"));
234
237
  }
235
238
 
236
239
  return true;
@@ -58,56 +58,61 @@ export default class WebSocketConnection extends Dbm.core.BaseObject {
58
58
  let ids = [];
59
59
  let logs = [];
60
60
 
61
- {
62
- let hasSelection = false;
63
- let currentArray = data.select;
64
- let currentArrayLength = currentArray.length;
65
- for(let i = 0; i < currentArrayLength; i++) {
66
- let currentSelectData = currentArray[i];
67
- let currentSelectType = currentSelectData["type"];
68
- let selection = Dbm.getInstance().repository.getItemIfExists("graphApi/range/select/" + currentSelectType);
69
- if(selection) {
70
- hasSelection = true;
71
- await selection.controller.select(selectQuery, currentSelectData, request);
72
- }
73
- else {
74
- logs.push("No selection named " + currentSelectType);
75
- }
76
- }
77
-
78
- if(hasSelection) {
79
- ids = await selectQuery.getIds();
80
-
61
+ try {
62
+ {
63
+ let hasSelection = false;
64
+ let currentArray = data.select;
65
+ let currentArrayLength = currentArray.length;
81
66
  for(let i = 0; i < currentArrayLength; i++) {
82
67
  let currentSelectData = currentArray[i];
83
68
  let currentSelectType = currentSelectData["type"];
84
69
  let selection = Dbm.getInstance().repository.getItemIfExists("graphApi/range/select/" + currentSelectType);
85
70
  if(selection) {
86
- ids = await selection.controller.filter(ids, currentSelectData, request);
71
+ hasSelection = true;
72
+ await selection.controller.select(selectQuery, currentSelectData, request);
73
+ }
74
+ else {
75
+ logs.push("No selection named " + currentSelectType);
87
76
  }
88
77
  }
89
- }
90
- else {
91
- logs.push("No valid selections");
78
+
79
+ if(hasSelection) {
80
+ ids = await selectQuery.getIds();
81
+
82
+ for(let i = 0; i < currentArrayLength; i++) {
83
+ let currentSelectData = currentArray[i];
84
+ let currentSelectType = currentSelectData["type"];
85
+ let selection = Dbm.getInstance().repository.getItemIfExists("graphApi/range/select/" + currentSelectType);
86
+ if(selection) {
87
+ ids = await selection.controller.filter(ids, currentSelectData, request);
88
+ }
89
+ }
90
+ }
91
+ else {
92
+ logs.push("No valid selections");
93
+ }
94
+
92
95
  }
93
96
 
94
- }
95
-
96
- {
97
- let encodeSession = new DbmGraphApi.range.EncodeSession();
98
- encodeSession.outputController = this;
99
-
100
- let currentArray = data.encode;
101
- let currentArrayLength = currentArray.length;
102
- for(let i = 0; i < currentArrayLength; i++) {
103
- let currentType = currentArray[i];
104
-
105
- await encodeSession.encode(ids, currentType);
97
+ {
98
+ let encodeSession = new DbmGraphApi.range.EncodeSession();
99
+ encodeSession.outputController = this;
100
+
101
+ let currentArray = data.encode;
102
+ let currentArrayLength = currentArray.length;
103
+ for(let i = 0; i < currentArrayLength; i++) {
104
+ let currentType = currentArray[i];
105
+
106
+ await encodeSession.encode(ids, currentType);
107
+ }
108
+
109
+ encodeSession.destroy();
106
110
  }
107
-
108
- encodeSession.destroy();
109
111
  }
110
-
112
+ catch(theError) {
113
+ logs.push(theError.message);
114
+ }
115
+
111
116
  this._webSocket.send(JSON.stringify({"type": "range/response", "ids": ids, "requestId": data["requestId"], "logs": logs}));
112
117
  break;
113
118
  case "data":
@@ -133,11 +138,18 @@ export default class WebSocketConnection extends Dbm.core.BaseObject {
133
138
  let dataFunctionItem = Dbm.getInstance().repository.getItemIfExists("graphApi/action/" + data['functionName']);
134
139
 
135
140
  let returnData = null;
136
- if(dataFunctionItem) {
137
- returnData = await dataFunctionItem.controller.performAction(data['data'], encodeSession);
141
+ let logs = [];
142
+
143
+ try {
144
+ if(dataFunctionItem) {
145
+ returnData = await dataFunctionItem.controller.performAction(data['data'], encodeSession);
146
+ }
147
+ }
148
+ catch(theError) {
149
+ logs.push(theError.message);
138
150
  }
139
151
 
140
- this._webSocket.send(JSON.stringify({"type": "data/response", "data": returnData, "requestId": data["requestId"]}));
152
+ this._webSocket.send(JSON.stringify({"type": "data/response", "data": returnData, "requestId": data["requestId"], "logs": logs}));
141
153
  }
142
154
  break;
143
155
  case "item":
@@ -216,7 +228,7 @@ export default class WebSocketConnection extends Dbm.core.BaseObject {
216
228
  }
217
229
 
218
230
 
219
- this._webSocket.send(JSON.stringify({"type": "item/response", "id": newObject.id, "requestId": data["requestId"]}));
231
+ this._webSocket.send(JSON.stringify({"type": "item/response", "id": returnId, "requestId": data["requestId"]}));
220
232
  }
221
233
  break;
222
234
  case "admin/editObject":
@@ -320,10 +332,15 @@ export default class WebSocketConnection extends Dbm.core.BaseObject {
320
332
 
321
333
  setInitialUser(aId) {
322
334
 
323
- let database = Dbm.getInstance().repository.getItem("graphDatabase").controller;
335
+ if(aId) {
336
+ let database = Dbm.getInstance().repository.getItem("graphDatabase").controller;
324
337
 
325
- let user = database.getUser(aId);
326
- this.item.setValue("user", user);
338
+ let user = database.getUser(aId);
339
+ this.item.setValue("user", user);
340
+ }
341
+ else {
342
+ this.item.setValue("user", null);
343
+ }
327
344
 
328
345
  this._webSocket.send(JSON.stringify({"type": "connectionReady", "user": aId}));
329
346
  }
@@ -336,7 +353,7 @@ export default class WebSocketConnection extends Dbm.core.BaseObject {
336
353
  let user = await this.getUser();
337
354
 
338
355
  if(!user) {
339
- throw("Only signed in users can use this endpoint");
356
+ throw(new Error("Only signed in users can use this endpoint"));
340
357
  }
341
358
 
342
359
  return true;
@@ -0,0 +1,12 @@
1
+ import Dbm from "dbm";
2
+ import EditBaseObject from "./EditBaseObject.js";
3
+
4
+ export default class SetVisibility extends EditBaseObject {
5
+ _construct() {
6
+ super._construct();
7
+ }
8
+
9
+ async performChange(aObject, aData, aRequest) {
10
+ await aObject.setVisibility(aData["value"]);
11
+ }
12
+ }
@@ -4,6 +4,7 @@ export {default as EditBaseObject} from "./EditBaseObject.js";
4
4
  export {default as SetField} from "./SetField.js";
5
5
  export {default as SetIdentifier} from "./SetIdentifier.js";
6
6
  export {default as SetUrl} from "./SetUrl.js";
7
+ export {default as SetVisibility} from "./SetVisibility.js";
7
8
  export {default as AddIncomingRelation} from "./AddIncomingRelation.js";
8
9
  export {default as AddOutgoingRelation} from "./AddOutgoingRelation.js";
9
10
  export {default as ClearCloudflareCache} from "./ClearCloudflareCache.js";
@@ -28,6 +29,12 @@ export const fullSetup = function() {
28
29
  currentSelect.item.register(prefix + name);
29
30
  }
30
31
 
32
+ {
33
+ let name = "setVisibility";
34
+ let currentSelect = new DbmGraphApi.admin.edit.SetVisibility();
35
+ currentSelect.item.register(prefix + name);
36
+ }
37
+
31
38
  {
32
39
  let name = "addIncomingRelation";
33
40
  let currentSelect = new DbmGraphApi.admin.edit.AddIncomingRelation();
@@ -33,6 +33,12 @@ let fullSelectSetup = function() {
33
33
  let currentSelect = new DbmGraphApi.range.select.IncludePrivate();
34
34
  currentSelect.item.register(selectPrefix + name);
35
35
  }
36
+
37
+ {
38
+ let name = "includeDraft";
39
+ let currentSelect = new DbmGraphApi.range.select.IncludeDraft();
40
+ currentSelect.item.register(selectPrefix + name);
41
+ }
36
42
  }
37
43
 
38
44
  export {fullSelectSetup};
@@ -115,6 +121,13 @@ let fullEncodeSetup = function() {
115
121
  currentEncode.item.register(encodePrefix + name);
116
122
  currentEncode.item.setValue("encodingType", name);
117
123
  }
124
+
125
+ {
126
+ let name = "visibility";
127
+ let currentEncode = new DbmGraphApi.range.encode.Visibility();
128
+ currentEncode.item.register(encodePrefix + name);
129
+ currentEncode.item.setValue("encodingType", name);
130
+ }
118
131
  }
119
132
 
120
133
  export {fullEncodeSetup};
@@ -0,0 +1,19 @@
1
+ import Dbm from "dbm";
2
+ import EncodeBaseObject from "./EncodeBaseObject.js";
3
+
4
+ export default class Visibility extends EncodeBaseObject {
5
+ _construct() {
6
+ super._construct();
7
+ }
8
+
9
+ async getEncodedData(aId, aEncodingSession) {
10
+
11
+ let returnObject = {};
12
+
13
+ let object = Dbm.getInstance().repository.getItem("graphDatabase").controller.getObject(aId);
14
+
15
+ returnObject["visibility"] = await object.getVisibility();
16
+
17
+ return returnObject;
18
+ }
19
+ }
@@ -10,4 +10,5 @@ export {default as Url} from "./Url.js";
10
10
  export {default as Breadcrumb} from "./Breadcrumb.js";
11
11
  export {default as NavigationName} from "./NavigationName.js";
12
12
  export {default as Type} from "./Type.js";
13
- export {default as Image} from "./Image.js";
13
+ export {default as Image} from "./Image.js";
14
+ export {default as Visibility} from "./Visibility.js";
@@ -0,0 +1,19 @@
1
+ import Dbm from "dbm";
2
+
3
+ import SelectBaseObject from "./SelectBaseObject.js";
4
+
5
+ export default class IncludeDraft extends SelectBaseObject {
6
+ _construct() {
7
+ super._construct();
8
+ }
9
+
10
+ async select(aQuery, aData, aRequest) {
11
+ await aRequest.connection.requireRole("admin");
12
+
13
+ aQuery.includeDraft();
14
+ }
15
+
16
+ async filter(aIds, aData, aRequest) {
17
+ return aIds;
18
+ }
19
+ }
@@ -8,8 +8,6 @@ export default class IncludePrivate extends SelectBaseObject {
8
8
  }
9
9
 
10
10
  async select(aQuery, aData, aRequest) {
11
- //METODO: check that we are allowed
12
-
13
11
  await aRequest.connection.requireRole("admin");
14
12
 
15
13
  aQuery.includePrivate();
@@ -1,4 +1,5 @@
1
1
  export {default as SelectBaseObject} from "./SelectBaseObject.js";
2
2
  export {default as IdSelection} from "./IdSelection.js";
3
3
  export {default as ByObjectType} from "./ByObjectType.js";
4
- export {default as IncludePrivate} from "./IncludePrivate.js";
4
+ export {default as IncludePrivate} from "./IncludePrivate.js";
5
+ export {default as IncludeDraft} from "./IncludeDraft.js";