@openinc/parse-server-opendash 2.4.85 → 2.4.87

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
+ const catchError_1 = require("../helper/catchError");
4
5
  const types_1 = require("../types");
5
6
  async function init(name) {
6
7
  Parse.Cloud.define(name, handleRequest, {
@@ -13,9 +14,13 @@ async function handleRequest(request) {
13
14
  }
14
15
  console.log("Handling request with", request.params);
15
16
  try {
16
- const time = new Date().getTime();
17
- //Log the time taken to fetch the data in seconds
18
- console.log(`Function openinc-openservice-ticket-data runs for: ${(new Date().getTime() - time) / 1000}s. Next: Constructing queries`);
17
+ // const time = new Date().getTime();
18
+ //Log the time
19
+ // console.log(
20
+ // `Function openinc-openservice-ticket-data runs for: ${
21
+ // (new Date().getTime() - time) / 1000
22
+ // }s. Next: Constructing queries`
23
+ // );
19
24
  const queries = [];
20
25
  for await (const config of request.params.config) {
21
26
  let ticketQuery = new Parse.Query(types_1.Maintenance_Ticket).equalTo("enabled", true);
@@ -36,98 +41,54 @@ async function handleRequest(request) {
36
41
  }
37
42
  queries.push(ticketQuery);
38
43
  }
39
- const ticketQuery = request.params.junction === "or"
44
+ let ticketQuery = request.params.junction === "or"
40
45
  ? Parse.Query.or(...queries)
41
46
  : Parse.Query.and(...queries);
42
- //Log the time taken to fetch the data in seconds
43
- console.log(`Function openinc-openservice-ticket-data runs for: ${(new Date().getTime() - time) / 1000}s. Next: Fetch ticket data`);
44
- // fetch all tickets for sorting by data
45
- const ticketData = await ticketQuery.limit(1000000000).map(async (ticket) => {
46
- let assignedusers = [];
47
- let assignedroles = [];
48
- if (typeof ticket.assignedusers !== "undefined") {
49
- assignedusers = await ticket.assignedusers
50
- .query()
51
- .find({ useMasterKey: true });
47
+ //Log the time
48
+ // console.log(
49
+ // `Function openinc-openservice-ticket-data runs for: ${
50
+ // (new Date().getTime() - time) / 1000
51
+ // }s. Next: Sorting and Pagination`
52
+ // );
53
+ if (request.params.config[0].sortBy && request.params.config[0].order) {
54
+ ticketQuery = ticketQuery.includeAll();
55
+ if (request.params.config[0].order === "asc") {
56
+ // @ts-ignore
57
+ ticketQuery = ticketQuery.ascending(request.params.config[0].sortBy);
52
58
  }
53
- if (typeof ticket.assignedroles !== "undefined") {
54
- assignedroles = await ticket.assignedroles
55
- .query()
56
- .find({ useMasterKey: true });
59
+ else {
60
+ // @ts-ignore
61
+ ticketQuery = ticketQuery.descending(request.params.config[0].sortBy);
57
62
  }
58
- const downtimes = getDowntime(ticket);
59
- const duedate = getDueDate(ticket);
60
- const frequency = getFrequency(ticket);
61
- const restriction = getRestriction(ticket);
62
- const issuecategory = getIssueCategory(ticket);
63
- const priority = getPriority(ticket);
64
- const source = getTicketSource(ticket);
65
- const state = getState(ticket);
66
- const dailySchedule = getDailySchedule(ticket);
67
- const messages = getMessages(ticket);
68
- const dataPromises = await Promise.all([
69
- downtimes,
70
- duedate,
71
- frequency,
72
- restriction,
73
- issuecategory,
74
- priority,
75
- source,
76
- state,
77
- dailySchedule,
78
- messages,
79
- ]);
80
- return {
81
- ticket: ticket,
82
- downtime: dataPromises[0].length > 0 ? dataPromises[0][0] : undefined,
83
- duedate: dataPromises[1].length > 0 ? dataPromises[1][0] : undefined,
84
- frequency: dataPromises[2].length > 0 ? dataPromises[2][0] : undefined,
85
- restriction: dataPromises[3].length > 0 ? dataPromises[3][0] : undefined,
86
- issuecategory: dataPromises[4].length > 0
87
- ? dataPromises[4][0]?.get("issuecategory")
88
- : undefined,
89
- priority: dataPromises[5].length > 0 ? dataPromises[5][0] : undefined,
90
- source: dataPromises[6].length > 0
91
- ? dataPromises[6][0]?.get("source")
92
- : undefined,
93
- state: dataPromises[7].length > 0
94
- ? dataPromises[7][0]?.get("state")
95
- : undefined,
96
- dailySchedule: dataPromises[8],
97
- messages: dataPromises[9].messages,
98
- messageBodies: dataPromises[9].messageBodies,
99
- assignedTo: [...assignedusers, ...assignedroles],
100
- };
101
- }, { useMasterKey: true });
102
- // .find({ useMasterKey: true });
103
- // get total count of tickets before applying pagination
104
- const totalCount = ticketData.length;
105
- // fetch ticket data for those tickets
106
- // const ticketData = await getTicketData(tickets);
107
- //Log the time taken to fetch the data in seconds
108
- console.log(`Function openinc-openservice-ticket-data runs for: ${(new Date().getTime() - time) / 1000}s. Next: Sorting and Pagination`);
109
- // apply sorting
110
- if (request.params.config[0].sortBy && request.params.config[0].order) {
111
- ticketData.sort((a, b) => {
112
- const valueA = findSortByValue(request.params.config[0]?.sortBy ?? "", a);
113
- const valueB = findSortByValue(request.params.config[0]?.sortBy ?? "", b);
114
- if (valueA < valueB) {
115
- return request.params.config[0].order === "asc" ? -1 : 1;
116
- }
117
- return request.params.config[0].order === "asc" ? 1 : -1;
118
- });
119
63
  }
120
- let ticketDataPaginated = ticketData;
121
- // apply pagination with skip and limit if set
122
64
  if (request.params.config[0].skip !== undefined &&
123
65
  request.params.config[0].limit !== undefined) {
124
- ticketDataPaginated = ticketData.slice(request.params.config[0].skip, request.params.config[0].skip + request.params.config[0].limit);
66
+ ticketQuery = ticketQuery
67
+ .skip(request.params.config[0].skip)
68
+ .limit(request.params.config[0].limit);
125
69
  }
70
+ const [ticketError, ticketsResult] = await (0, catchError_1.catchError)(ticketQuery.find({ useMasterKey: true }));
71
+ if (ticketError) {
72
+ throw ticketError;
73
+ }
74
+ // console.log(
75
+ // `Function openinc-openservice-ticket-data runs for: ${
76
+ // (new Date().getTime() - time) / 1000
77
+ // }s. Next: Fetch ticket data`
78
+ // );
79
+ // get total count of tickets before applying pagination
80
+ const totalCount = ticketsResult.length;
81
+ // fetch ticket data for those tickets
82
+ const ticketData = await getTicketData(ticketsResult);
126
83
  //Log the time taken to fetch the data in seconds
127
- console.log(`Total time taken to execute function openinc-openservice-ticket-data: ${(new Date().getTime() - time) / 1000}s`);
84
+ // console.log(
85
+ // `Total time taken to execute function openinc-openservice-ticket-data: ${
86
+ // (new Date().getTime() - time) / 1000
87
+ // }s`
88
+ // );
128
89
  return {
129
90
  success: true,
130
- data: ticketDataPaginated,
91
+ data: ticketData,
131
92
  total: totalCount,
132
93
  };
133
94
  }
@@ -140,7 +101,6 @@ async function handleRequest(request) {
140
101
  }
141
102
  }
142
103
  async function getTicketData(tickets) {
143
- // const ticketIds = tickets.map((ticket) => ticket.id);
144
104
  const ticketDataPromises = tickets.map(async (ticket) => {
145
105
  let assignedusers = [];
146
106
  let assignedroles = [];
@@ -178,20 +138,14 @@ async function getTicketData(tickets) {
178
138
  ]);
179
139
  return {
180
140
  ticket: ticket,
181
- downtime: dataPromises[0].length > 0 ? dataPromises[0][0] : undefined,
182
- duedate: dataPromises[1].length > 0 ? dataPromises[1][0] : undefined,
183
- frequency: dataPromises[2].length > 0 ? dataPromises[2][0] : undefined,
184
- restriction: dataPromises[3].length > 0 ? dataPromises[3][0] : undefined,
185
- issuecategory: dataPromises[4].length > 0
186
- ? dataPromises[4][0]?.get("issuecategory")
187
- : undefined,
188
- priority: dataPromises[5].length > 0 ? dataPromises[5][0] : undefined,
189
- source: dataPromises[6].length > 0
190
- ? dataPromises[6][0]?.get("source")
191
- : undefined,
192
- state: dataPromises[7].length > 0
193
- ? dataPromises[7][0]?.get("state")
194
- : undefined,
141
+ downtime: dataPromises[0],
142
+ duedate: dataPromises[1],
143
+ frequency: dataPromises[2],
144
+ restriction: dataPromises[3],
145
+ issuecategory: dataPromises[4]?.get("issuecategory"),
146
+ priority: dataPromises[5],
147
+ source: dataPromises[6]?.get("source"),
148
+ state: dataPromises[7]?.get("state"),
195
149
  dailySchedule: dataPromises[8],
196
150
  messages: dataPromises[9].messages,
197
151
  messageBodies: dataPromises[9].messageBodies,
@@ -212,7 +166,7 @@ async function getDowntime(ticket) {
212
166
  .equalTo("ticket", ticket)
213
167
  // .containedIn("ticket", ticketIds)
214
168
  // .limit(1_000_000)
215
- .find({ useMasterKey: true });
169
+ .first({ useMasterKey: true });
216
170
  // .filter((downtime) => downtime.get("ticket").id === ticket.id, {
217
171
  // useMasterKey: true,
218
172
  // });
@@ -229,7 +183,7 @@ async function getDueDate(ticket) {
229
183
  .equalTo("ticket", ticket)
230
184
  // .containedIn("ticket", ticketIds)
231
185
  // .limit(1_000_000)
232
- .find({ useMasterKey: true });
186
+ .first({ useMasterKey: true });
233
187
  // .filter((duedate) => duedate.get("ticket").id === ticket.id, {
234
188
  // useMasterKey: true,
235
189
  // });
@@ -245,7 +199,7 @@ async function getFrequency(ticket) {
245
199
  .equalTo("ticket", ticket)
246
200
  // .containedIn("ticket", ticketIds)
247
201
  // .limit(1_000_000)
248
- .find({ useMasterKey: true });
202
+ .first({ useMasterKey: true });
249
203
  // .filter((frequency) => frequency.get("ticket").id === ticket.id, {
250
204
  // useMasterKey: true,
251
205
  // });
@@ -261,7 +215,7 @@ async function getRestriction(ticket) {
261
215
  .equalTo("ticket", ticket)
262
216
  // .containedIn("ticket", ticketIds)
263
217
  // .limit(1_000_000)
264
- .find({ useMasterKey: true });
218
+ .first({ useMasterKey: true });
265
219
  // .filter((restriction) => restriction.get("ticket").id === ticket.id, {
266
220
  // useMasterKey: true,
267
221
  // });
@@ -279,7 +233,7 @@ async function getPriority(ticket) {
279
233
  // .containedIn("ticket", ticketIds)
280
234
  // .limit(1_000_000)
281
235
  .equalTo("ticket", ticket)
282
- .find({ useMasterKey: true });
236
+ .first({ useMasterKey: true });
283
237
  // .filter((priority) => priority.get("ticket").id === ticket.id, {
284
238
  // useMasterKey: true,
285
239
  // });
@@ -297,7 +251,7 @@ async function getState(ticket) {
297
251
  // .containedIn("objectId", ticketIds)
298
252
  )
299
253
  // .limit(1_000_000)
300
- .find({ useMasterKey: true });
254
+ .first({ useMasterKey: true });
301
255
  // .filter((ts) => ts.get("ticket")?.id === ticket.id, {
302
256
  // useMasterKey: true,
303
257
  // });
@@ -339,7 +293,7 @@ async function getIssueCategory(ticket) {
339
293
  .equalTo("ticket", ticket)
340
294
  // .containedIn("ticket", ticketIds)
341
295
  // .limit(1_000_000)
342
- .find({ useMasterKey: true });
296
+ .first({ useMasterKey: true });
343
297
  // .filter((issuecategory) => issuecategory.get("ticket").id === ticket.id, {
344
298
  // useMasterKey: true,
345
299
  // });
@@ -356,7 +310,7 @@ async function getTicketSource(ticket) {
356
310
  .equalTo("ticket", ticket)
357
311
  // .containedIn("ticket", ticketIds)
358
312
  // .limit(1_000_000)
359
- .find({ useMasterKey: true });
313
+ .first({ useMasterKey: true });
360
314
  // .filter((source) => source.get("ticket").id === ticket.id, {
361
315
  // useMasterKey: true,
362
316
  // });
@@ -19,7 +19,7 @@ async function init() {
19
19
  (0, __1.afterSaveHook)(types_1.Maintenance_Priority, async (request) => {
20
20
  const { object, original, user } = request;
21
21
  // Remove entry if it has the same values as the previous entry so its simply reverted to the already existing entry
22
- await (0, removeShorltyPreviousEntry_1.removeEqualSaved)(object, (query) => {
22
+ const lastObject = await (0, removeShorltyPreviousEntry_1.removeEqualSaved)(object, (query) => {
23
23
  query.includeAll();
24
24
  query.equalTo("ticket", object.get("ticket"));
25
25
  query.notEqualTo("objectId", object.id);
@@ -27,5 +27,9 @@ async function init() {
27
27
  }, (first, second) => {
28
28
  return first.get("value") === second.get("value");
29
29
  });
30
+ //Save object.id in object.ticket.latestPriority
31
+ const ticket = lastObject.get("ticket");
32
+ ticket.set("latestPriorityValue", lastObject.get("value"));
33
+ await ticket.save(null, { useMasterKey: true });
30
34
  });
31
35
  }
@@ -2,8 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
4
  const __1 = require("..");
5
+ const catchError_1 = require("../helper/catchError");
5
6
  const types_1 = require("../types");
6
7
  async function init() {
8
+ // Query all of Maintenance_Ticket and find all of Maintenance_Priority sort by createdAt in descending order
9
+ // get the objectid of the first object in the array and save it in the latestPriority field of the Maintenance_Ticket object
10
+ console.log("Maintenance_Ticket init: Check and save latestPriority");
11
+ const [ticketError, ticketResults] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket).find({ useMasterKey: true }));
12
+ if (ticketError) {
13
+ console.error("Maintenance_Ticket error", ticketError);
14
+ return;
15
+ }
16
+ const savePromises = ticketResults.map(async (ticket) => {
17
+ if (!ticket.get("latestPriorityValue")) {
18
+ const [priorityError, priorityResult] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Priority)
19
+ .equalTo("ticket", ticket)
20
+ .descending("createdAt")
21
+ .first({ useMasterKey: true }));
22
+ if (priorityError) {
23
+ console.error("Maintenance_Priority error", priorityError);
24
+ return;
25
+ }
26
+ ticket.set("latestPriorityValue", priorityResult?.get("value"));
27
+ return await ticket.save(null, { useMasterKey: true });
28
+ }
29
+ });
30
+ await Promise.all(savePromises);
7
31
  (0, __1.beforeSaveHook)(types_1.Maintenance_Ticket, async (request) => {
8
32
  const { object, original, user } = request;
9
33
  await (0, __1.defaultHandler)(request);
@@ -1,3 +1,5 @@
1
+ import type { Tenant } from "./Tenant";
2
+ import type { _User } from "./_User";
1
3
  export interface Documentation_CategoryAttributes {
2
4
  id: string;
3
5
  objectId: string;
@@ -6,6 +8,8 @@ export interface Documentation_CategoryAttributes {
6
8
  name: string;
7
9
  order: number;
8
10
  parent?: Documentation_Category;
11
+ tenant?: Tenant;
12
+ user?: _User;
9
13
  }
10
14
  export declare class Documentation_Category extends Parse.Object<Documentation_CategoryAttributes> {
11
15
  static className: string;
@@ -16,4 +20,8 @@ export declare class Documentation_Category extends Parse.Object<Documentation_C
16
20
  set order(value: number);
17
21
  get parent(): Documentation_Category | undefined;
18
22
  set parent(value: Documentation_Category | undefined);
23
+ get tenant(): Tenant | undefined;
24
+ set tenant(value: Tenant | undefined);
25
+ get user(): _User | undefined;
26
+ set user(value: _User | undefined);
19
27
  }
@@ -23,6 +23,18 @@ class Documentation_Category extends Parse.Object {
23
23
  set parent(value) {
24
24
  super.set("parent", value);
25
25
  }
26
+ get tenant() {
27
+ return super.get("tenant");
28
+ }
29
+ set tenant(value) {
30
+ super.set("tenant", value);
31
+ }
32
+ get user() {
33
+ return super.get("user");
34
+ }
35
+ set user(value) {
36
+ super.set("user", value);
37
+ }
26
38
  }
27
39
  exports.Documentation_Category = Documentation_Category;
28
40
  Documentation_Category.className = "OD3_Documentation_Category";
@@ -1,4 +1,5 @@
1
1
  import type { Documentation_Category } from "./Documentation_Category";
2
+ import type { Tenant } from "./Tenant";
2
3
  import type { _User } from "./_User";
3
4
  export interface Documentation_DocumentAttributes {
4
5
  id: string;
@@ -9,8 +10,10 @@ export interface Documentation_DocumentAttributes {
9
10
  content: string;
10
11
  createdBy: _User;
11
12
  order: number;
13
+ tenant?: Tenant;
12
14
  title: string;
13
15
  updatedBy: _User;
16
+ user?: _User;
14
17
  }
15
18
  export declare class Documentation_Document extends Parse.Object<Documentation_DocumentAttributes> {
16
19
  static className: string;
@@ -23,8 +26,12 @@ export declare class Documentation_Document extends Parse.Object<Documentation_D
23
26
  set createdBy(value: _User);
24
27
  get order(): number;
25
28
  set order(value: number);
29
+ get tenant(): Tenant | undefined;
30
+ set tenant(value: Tenant | undefined);
26
31
  get title(): string;
27
32
  set title(value: string);
28
33
  get updatedBy(): _User;
29
34
  set updatedBy(value: _User);
35
+ get user(): _User | undefined;
36
+ set user(value: _User | undefined);
30
37
  }
@@ -29,6 +29,12 @@ class Documentation_Document extends Parse.Object {
29
29
  set order(value) {
30
30
  super.set("order", value);
31
31
  }
32
+ get tenant() {
33
+ return super.get("tenant");
34
+ }
35
+ set tenant(value) {
36
+ super.set("tenant", value);
37
+ }
32
38
  get title() {
33
39
  return super.get("title");
34
40
  }
@@ -41,6 +47,12 @@ class Documentation_Document extends Parse.Object {
41
47
  set updatedBy(value) {
42
48
  super.set("updatedBy", value);
43
49
  }
50
+ get user() {
51
+ return super.get("user");
52
+ }
53
+ set user(value) {
54
+ super.set("user", value);
55
+ }
44
56
  }
45
57
  exports.Documentation_Document = Documentation_Document;
46
58
  Documentation_Document.className = "OD3_Documentation_Document";
@@ -12,6 +12,7 @@ export interface Maintenance_TicketAttributes {
12
12
  dailySchedule?: Maintenance_DailySchedule;
13
13
  enabled: boolean;
14
14
  id_old?: string;
15
+ latestPriorityValue?: number;
15
16
  tenant?: Tenant;
16
17
  title?: string;
17
18
  user?: _User;
@@ -27,6 +28,8 @@ export declare class Maintenance_Ticket extends Parse.Object<Maintenance_TicketA
27
28
  set enabled(value: boolean);
28
29
  get id_old(): string | undefined;
29
30
  set id_old(value: string | undefined);
31
+ get latestPriorityValue(): number | undefined;
32
+ set latestPriorityValue(value: number | undefined);
30
33
  get tenant(): Tenant | undefined;
31
34
  set tenant(value: Tenant | undefined);
32
35
  get title(): string | undefined;
@@ -29,6 +29,12 @@ class Maintenance_Ticket extends Parse.Object {
29
29
  set id_old(value) {
30
30
  super.set("id_old", value);
31
31
  }
32
+ get latestPriorityValue() {
33
+ return super.get("latestPriorityValue");
34
+ }
35
+ set latestPriorityValue(value) {
36
+ super.set("latestPriorityValue", value);
37
+ }
32
38
  get tenant() {
33
39
  return super.get("tenant");
34
40
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "2.4.85",
3
+ "version": "2.4.87",
4
4
  "description": "Parse Server Cloud Code for open.DASH",
5
5
  "keywords": [
6
6
  "parse",
@@ -14,6 +14,16 @@
14
14
  "type": "Pointer",
15
15
  "targetClass": "{{PREFIX}}Documentation_Category",
16
16
  "required": false
17
+ },
18
+ "tenant": {
19
+ "type": "Pointer",
20
+ "targetClass": "{{PREFIX}}Tenant",
21
+ "required": false
22
+ },
23
+ "user": {
24
+ "type": "Pointer",
25
+ "targetClass": "_User",
26
+ "required": false
17
27
  }
18
28
  },
19
29
  "classLevelPermissions": {
@@ -19,6 +19,11 @@
19
19
  "required": false,
20
20
  "defaultValue": 50
21
21
  },
22
+ "tenant": {
23
+ "type": "Pointer",
24
+ "targetClass": "{{PREFIX}}Tenant",
25
+ "required": false
26
+ },
22
27
  "title": {
23
28
  "type": "String",
24
29
  "required": true
@@ -27,6 +32,11 @@
27
32
  "type": "Pointer",
28
33
  "targetClass": "_User",
29
34
  "required": true
35
+ },
36
+ "user": {
37
+ "type": "Pointer",
38
+ "targetClass": "_User",
39
+ "required": false
30
40
  }
31
41
  },
32
42
  "classLevelPermissions": {
@@ -24,6 +24,10 @@
24
24
  "type": "String",
25
25
  "required": false
26
26
  },
27
+ "latestPriorityValue": {
28
+ "type": "Number",
29
+ "required": false
30
+ },
27
31
  "tenant": {
28
32
  "type": "Pointer",
29
33
  "targetClass": "{{PREFIX}}Tenant",
@@ -17,6 +17,11 @@
17
17
  "type": "Pointer",
18
18
  "targetClass": "{{PREFIX}}Source",
19
19
  "required": true
20
+ },
21
+ "tenant": {
22
+ "type": "Pointer",
23
+ "targetClass": "{{PREFIX}}Tenant",
24
+ "required": true
20
25
  }
21
26
  },
22
27
  "classLevelPermissions": {
@@ -1 +0,0 @@
1
- export declare function init(): Promise<void>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.init = init;
4
- const __1 = require("..");
5
- const types_1 = require("../types");
6
- async function init() {
7
- (0, __1.beforeSaveHook)(types_1.Documentation_Category, async (request) => {
8
- const { object, original, user } = request;
9
- await (0, __1.defaultHandler)(request);
10
- await (0, __1.defaultAclHandler)(request);
11
- // TODO
12
- });
13
- (0, __1.afterSaveHook)(types_1.Documentation_Category, async (request) => {
14
- const { object, original, user } = request;
15
- // TODO
16
- });
17
- }
@@ -1 +0,0 @@
1
- export declare function init(): Promise<void>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.init = init;
4
- const __1 = require("..");
5
- const types_1 = require("../types");
6
- async function init() {
7
- (0, __1.beforeSaveHook)(types_1.Documentation_Document, async (request) => {
8
- const { object, original, user } = request;
9
- await (0, __1.defaultHandler)(request);
10
- await (0, __1.defaultAclHandler)(request);
11
- // TODO
12
- });
13
- (0, __1.afterSaveHook)(types_1.Documentation_Document, async (request) => {
14
- const { object, original, user } = request;
15
- // TODO
16
- });
17
- }