@openinc/parse-server-opendash 2.4.86 → 2.4.88

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, {
@@ -11,11 +12,8 @@ async function handleRequest(request) {
11
12
  if (typeof request.user === "undefined") {
12
13
  return { success: false, error: "User not found" };
13
14
  }
14
- console.log("Handling request with", request.params);
15
+ console.log("openinc-openservice-ticket-data: 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`);
19
17
  const queries = [];
20
18
  for await (const config of request.params.config) {
21
19
  let ticketQuery = new Parse.Query(types_1.Maintenance_Ticket).equalTo("enabled", true);
@@ -36,98 +34,37 @@ async function handleRequest(request) {
36
34
  }
37
35
  queries.push(ticketQuery);
38
36
  }
39
- const ticketQuery = request.params.junction === "or"
37
+ let ticketQuery = request.params.junction === "or"
40
38
  ? Parse.Query.or(...queries)
41
39
  : 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.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 });
40
+ if (request.params.config[0].sortBy && request.params.config[0].order) {
41
+ ticketQuery = ticketQuery.includeAll();
42
+ if (request.params.config[0].order === "asc") {
43
+ // @ts-ignore
44
+ ticketQuery = ticketQuery.ascending(request.params.config[0].sortBy);
52
45
  }
53
- if (typeof ticket.assignedroles !== "undefined") {
54
- assignedroles = await ticket.assignedroles
55
- .query()
56
- .find({ useMasterKey: true });
46
+ else {
47
+ // @ts-ignore
48
+ ticketQuery = ticketQuery.descending(request.params.config[0].sortBy);
57
49
  }
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
50
  }
120
- let ticketDataPaginated = ticketData;
121
- // apply pagination with skip and limit if set
51
+ // get total count of tickets before applying pagination
52
+ const totalCount = await ticketQuery.count({ useMasterKey: true });
122
53
  if (request.params.config[0].skip !== undefined &&
123
54
  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);
55
+ ticketQuery = ticketQuery
56
+ .skip(request.params.config[0].skip)
57
+ .limit(request.params.config[0].limit);
125
58
  }
126
- //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`);
59
+ const [ticketError, ticketsResult] = await (0, catchError_1.catchError)(ticketQuery.find({ useMasterKey: true }));
60
+ if (ticketError) {
61
+ throw ticketError;
62
+ }
63
+ // fetch ticket data for those tickets
64
+ const ticketData = await getTicketData(ticketsResult);
128
65
  return {
129
66
  success: true,
130
- data: ticketDataPaginated,
67
+ data: ticketData,
131
68
  total: totalCount,
132
69
  };
133
70
  }
@@ -140,7 +77,6 @@ async function handleRequest(request) {
140
77
  }
141
78
  }
142
79
  async function getTicketData(tickets) {
143
- // const ticketIds = tickets.map((ticket) => ticket.id);
144
80
  const ticketDataPromises = tickets.map(async (ticket) => {
145
81
  let assignedusers = [];
146
82
  let assignedroles = [];
@@ -178,20 +114,14 @@ async function getTicketData(tickets) {
178
114
  ]);
179
115
  return {
180
116
  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,
117
+ downtime: dataPromises[0],
118
+ duedate: dataPromises[1],
119
+ frequency: dataPromises[2],
120
+ restriction: dataPromises[3],
121
+ issuecategory: dataPromises[4]?.get("issuecategory"),
122
+ priority: dataPromises[5],
123
+ source: dataPromises[6]?.get("source"),
124
+ state: dataPromises[7]?.get("state"),
195
125
  dailySchedule: dataPromises[8],
196
126
  messages: dataPromises[9].messages,
197
127
  messageBodies: dataPromises[9].messageBodies,
@@ -212,7 +142,7 @@ async function getDowntime(ticket) {
212
142
  .equalTo("ticket", ticket)
213
143
  // .containedIn("ticket", ticketIds)
214
144
  // .limit(1_000_000)
215
- .find({ useMasterKey: true });
145
+ .first({ useMasterKey: true });
216
146
  // .filter((downtime) => downtime.get("ticket").id === ticket.id, {
217
147
  // useMasterKey: true,
218
148
  // });
@@ -229,7 +159,7 @@ async function getDueDate(ticket) {
229
159
  .equalTo("ticket", ticket)
230
160
  // .containedIn("ticket", ticketIds)
231
161
  // .limit(1_000_000)
232
- .find({ useMasterKey: true });
162
+ .first({ useMasterKey: true });
233
163
  // .filter((duedate) => duedate.get("ticket").id === ticket.id, {
234
164
  // useMasterKey: true,
235
165
  // });
@@ -245,7 +175,7 @@ async function getFrequency(ticket) {
245
175
  .equalTo("ticket", ticket)
246
176
  // .containedIn("ticket", ticketIds)
247
177
  // .limit(1_000_000)
248
- .find({ useMasterKey: true });
178
+ .first({ useMasterKey: true });
249
179
  // .filter((frequency) => frequency.get("ticket").id === ticket.id, {
250
180
  // useMasterKey: true,
251
181
  // });
@@ -261,7 +191,7 @@ async function getRestriction(ticket) {
261
191
  .equalTo("ticket", ticket)
262
192
  // .containedIn("ticket", ticketIds)
263
193
  // .limit(1_000_000)
264
- .find({ useMasterKey: true });
194
+ .first({ useMasterKey: true });
265
195
  // .filter((restriction) => restriction.get("ticket").id === ticket.id, {
266
196
  // useMasterKey: true,
267
197
  // });
@@ -279,7 +209,7 @@ async function getPriority(ticket) {
279
209
  // .containedIn("ticket", ticketIds)
280
210
  // .limit(1_000_000)
281
211
  .equalTo("ticket", ticket)
282
- .find({ useMasterKey: true });
212
+ .first({ useMasterKey: true });
283
213
  // .filter((priority) => priority.get("ticket").id === ticket.id, {
284
214
  // useMasterKey: true,
285
215
  // });
@@ -297,7 +227,7 @@ async function getState(ticket) {
297
227
  // .containedIn("objectId", ticketIds)
298
228
  )
299
229
  // .limit(1_000_000)
300
- .find({ useMasterKey: true });
230
+ .first({ useMasterKey: true });
301
231
  // .filter((ts) => ts.get("ticket")?.id === ticket.id, {
302
232
  // useMasterKey: true,
303
233
  // });
@@ -339,7 +269,7 @@ async function getIssueCategory(ticket) {
339
269
  .equalTo("ticket", ticket)
340
270
  // .containedIn("ticket", ticketIds)
341
271
  // .limit(1_000_000)
342
- .find({ useMasterKey: true });
272
+ .first({ useMasterKey: true });
343
273
  // .filter((issuecategory) => issuecategory.get("ticket").id === ticket.id, {
344
274
  // useMasterKey: true,
345
275
  // });
@@ -356,7 +286,7 @@ async function getTicketSource(ticket) {
356
286
  .equalTo("ticket", ticket)
357
287
  // .containedIn("ticket", ticketIds)
358
288
  // .limit(1_000_000)
359
- .find({ useMasterKey: true });
289
+ .first({ useMasterKey: true });
360
290
  // .filter((source) => source.get("ticket").id === ticket.id, {
361
291
  // useMasterKey: true,
362
292
  // });
@@ -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,19 +2,49 @@
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
+ await initClass();
7
9
  (0, __1.beforeSaveHook)(types_1.Maintenance_Ticket, async (request) => {
8
10
  const { object, original, user } = request;
9
11
  await (0, __1.defaultHandler)(request);
10
12
  await (0, __1.defaultAclHandler)(request);
11
- // TODO
12
13
  });
13
14
  (0, __1.afterSaveHook)(types_1.Maintenance_Ticket, async (request) => {
14
15
  const { object, original, user, master } = request;
15
16
  if (!master && original && original.get("createdAt")) {
16
17
  object.save({ createdAt: original.get("createdAt") }, { useMasterKey: true });
17
18
  }
18
- // TODO
19
19
  });
20
+ async function initClass() {
21
+ // Query all of Maintenance_Ticket and find all of Maintenance_Priority sort by createdAt in descending order
22
+ // get the objectid of the first object in the array and save it in the latestPriority field of the Maintenance_Ticket object
23
+ console.log("Maintenance_Ticket init: Check and save latestPriority");
24
+ const [ticketError, ticketResults] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket).find({ useMasterKey: true }));
25
+ if (ticketError) {
26
+ console.error("Maintenance_Ticket error", ticketError);
27
+ return;
28
+ }
29
+ const savePromises = ticketResults.map(async (ticket) => {
30
+ if (!ticket.get("latestPriorityValue")) {
31
+ const [priorityError, priorityResult] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Priority)
32
+ .equalTo("ticket", ticket)
33
+ .descending("createdAt")
34
+ .first({ useMasterKey: true }));
35
+ if (priorityError) {
36
+ console.error("Maintenance_Priority error", priorityError);
37
+ return;
38
+ }
39
+ if (typeof priorityResult === "undefined") {
40
+ console.log("Maintenance_Ticket init: Check and save latestPriority: No priority found for ticket", ticket.id);
41
+ return;
42
+ }
43
+ ticket.set("latestPriorityValue", priorityResult.get("value"));
44
+ return await ticket.save(null, { useMasterKey: true });
45
+ }
46
+ });
47
+ await Promise.all(savePromises);
48
+ console.log("Maintenance_Ticket init: Check and save latestPriority done");
49
+ }
20
50
  }
@@ -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.86",
3
+ "version": "2.4.88",
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
- }