@drax/crud-back 0.38.1 → 0.40.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/controllers/AbstractFastifyController.js +22 -14
- package/package.json +6 -6
- package/src/controllers/AbstractFastifyController.ts +25 -15
- package/tsconfig.tsbuildinfo +1 -1
- package/types/controllers/AbstractFastifyController.d.ts +2 -2
- package/types/controllers/AbstractFastifyController.d.ts.map +1 -1
|
@@ -99,71 +99,79 @@ class AbstractFastifyController extends CommonController {
|
|
|
99
99
|
extractRequestData(request) {
|
|
100
100
|
return {
|
|
101
101
|
user: {
|
|
102
|
-
id: request
|
|
103
|
-
username: request
|
|
102
|
+
id: request?.rbac?.userId,
|
|
103
|
+
username: request?.rbac?.username,
|
|
104
104
|
role: {
|
|
105
|
-
id: request
|
|
106
|
-
name: request
|
|
105
|
+
id: request?.rbac?.roleId,
|
|
106
|
+
name: request?.rbac?.roleName,
|
|
107
107
|
},
|
|
108
108
|
tenant: {
|
|
109
|
-
id: request
|
|
110
|
-
name: request
|
|
109
|
+
id: request?.rbac?.tenantId,
|
|
110
|
+
name: request?.rbac?.tenantName,
|
|
111
111
|
},
|
|
112
112
|
apiKey: {
|
|
113
|
-
id: request
|
|
114
|
-
name: request
|
|
115
|
-
}
|
|
113
|
+
id: request?.rbac?.apiKeyId,
|
|
114
|
+
name: request?.rbac?.apiKeyName,
|
|
115
|
+
},
|
|
116
|
+
session: request?.rbac?.session,
|
|
116
117
|
},
|
|
117
118
|
ip: request.ip,
|
|
118
119
|
userAgent: request.headers['user-agent'],
|
|
119
|
-
sessionId: request.rbac.session,
|
|
120
120
|
requestId: request.id,
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
123
|
async onCreated(request, item) {
|
|
124
124
|
const requestData = this.extractRequestData(request);
|
|
125
|
+
const detail = `User ${requestData.user.username} created ${this.entityName}.`;
|
|
125
126
|
const eventData = {
|
|
126
127
|
action: 'created',
|
|
127
128
|
entity: this.entityName,
|
|
128
129
|
postItem: item,
|
|
129
130
|
preItem: null,
|
|
130
131
|
timestamp: new Date(),
|
|
132
|
+
detail: detail,
|
|
131
133
|
...requestData
|
|
132
134
|
};
|
|
133
135
|
this.eventEmitter.emitCrudEvent(eventData);
|
|
134
136
|
}
|
|
135
137
|
async onUpdated(request, preItem, postItem) {
|
|
136
138
|
const requestData = this.extractRequestData(request);
|
|
139
|
+
const detail = `User ${requestData.user.username} updated ${this.entityName}.`;
|
|
137
140
|
const eventData = {
|
|
138
141
|
action: 'updated',
|
|
139
142
|
entity: this.entityName,
|
|
140
143
|
postItem: postItem,
|
|
141
144
|
preItem: preItem,
|
|
142
145
|
timestamp: new Date(),
|
|
146
|
+
detail: detail,
|
|
143
147
|
...requestData
|
|
144
148
|
};
|
|
145
149
|
this.eventEmitter.emitCrudEvent(eventData);
|
|
146
150
|
}
|
|
147
151
|
async onDeleted(request, item) {
|
|
148
152
|
const requestData = this.extractRequestData(request);
|
|
153
|
+
const detail = `User ${requestData.user.username} deleted ${this.entityName}.`;
|
|
149
154
|
const eventData = {
|
|
150
155
|
action: 'deleted',
|
|
151
156
|
entity: this.entityName,
|
|
152
157
|
postItem: null,
|
|
153
158
|
preItem: item,
|
|
154
159
|
timestamp: new Date(),
|
|
160
|
+
detail: detail,
|
|
155
161
|
...requestData
|
|
156
162
|
};
|
|
157
163
|
this.eventEmitter.emitCrudEvent(eventData);
|
|
158
164
|
}
|
|
159
165
|
async onExported(request, response) {
|
|
160
166
|
const requestData = this.extractRequestData(request);
|
|
167
|
+
const detail = `User ${requestData.user.username} exported ${this.entityName}.`;
|
|
161
168
|
const eventData = {
|
|
162
169
|
action: 'exported',
|
|
163
170
|
entity: this.entityName,
|
|
164
171
|
postItem: null,
|
|
165
172
|
preItem: null,
|
|
166
173
|
timestamp: new Date(),
|
|
174
|
+
detail: detail,
|
|
167
175
|
...requestData
|
|
168
176
|
};
|
|
169
177
|
this.eventEmitter.emitCrudEvent(eventData);
|
|
@@ -174,7 +182,7 @@ class AbstractFastifyController extends CommonController {
|
|
|
174
182
|
const payload = request.body;
|
|
175
183
|
this.applyUserAndTenantSetters(payload, request.rbac);
|
|
176
184
|
let item = await this.service.create(payload);
|
|
177
|
-
|
|
185
|
+
this.onCreated(request, item);
|
|
178
186
|
return item;
|
|
179
187
|
}
|
|
180
188
|
catch (e) {
|
|
@@ -205,7 +213,7 @@ class AbstractFastifyController extends CommonController {
|
|
|
205
213
|
if (!item) {
|
|
206
214
|
throw new NotFoundError();
|
|
207
215
|
}
|
|
208
|
-
|
|
216
|
+
this.onUpdated(request, preItem, item);
|
|
209
217
|
return item;
|
|
210
218
|
}
|
|
211
219
|
catch (e) {
|
|
@@ -236,7 +244,7 @@ class AbstractFastifyController extends CommonController {
|
|
|
236
244
|
if (!item) {
|
|
237
245
|
throw new NotFoundError();
|
|
238
246
|
}
|
|
239
|
-
|
|
247
|
+
this.onUpdated(request, preItem, item);
|
|
240
248
|
return item;
|
|
241
249
|
}
|
|
242
250
|
catch (e) {
|
|
@@ -261,7 +269,7 @@ class AbstractFastifyController extends CommonController {
|
|
|
261
269
|
}
|
|
262
270
|
this.assertTenant(item, request.rbac);
|
|
263
271
|
await this.service.delete(id);
|
|
264
|
-
|
|
272
|
+
this.onDeleted(request, item);
|
|
265
273
|
reply.send({
|
|
266
274
|
id: id,
|
|
267
275
|
message: 'Item deleted successfully',
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.40.0",
|
|
7
7
|
"description": "Crud utils across modules",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "types/index.d.ts",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"author": "Cristian Incarnato & Drax Team",
|
|
23
23
|
"license": "ISC",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@drax/common-back": "^0.
|
|
26
|
-
"@drax/common-share": "^0.
|
|
27
|
-
"@drax/identity-share": "^0.
|
|
28
|
-
"@drax/media-back": "^0.
|
|
25
|
+
"@drax/common-back": "^0.40.0",
|
|
26
|
+
"@drax/common-share": "^0.40.0",
|
|
27
|
+
"@drax/identity-share": "^0.40.0",
|
|
28
|
+
"@drax/media-back": "^0.40.0",
|
|
29
29
|
"@graphql-tools/load-files": "^7.0.0",
|
|
30
30
|
"@graphql-tools/merge": "^9.0.4",
|
|
31
31
|
"mongoose": "^8.6.3",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"tsc-alias": "^1.8.10",
|
|
46
46
|
"typescript": "^5.6.2"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "269ec7921d83364dfba091cd74bd3f45a8135c26"
|
|
49
49
|
}
|
|
@@ -180,39 +180,43 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
protected extractRequestData(request:
|
|
183
|
+
protected extractRequestData(request: FastifyRequest) {
|
|
184
184
|
return {
|
|
185
185
|
user: {
|
|
186
|
-
id: request
|
|
187
|
-
username: request
|
|
186
|
+
id: request?.rbac?.userId,
|
|
187
|
+
username: request?.rbac?.username,
|
|
188
188
|
role:{
|
|
189
|
-
id: request
|
|
190
|
-
name: request
|
|
189
|
+
id: request?.rbac?.roleId,
|
|
190
|
+
name: request?.rbac?.roleName,
|
|
191
191
|
},
|
|
192
192
|
tenant: {
|
|
193
|
-
id: request
|
|
194
|
-
name: request
|
|
193
|
+
id: request?.rbac?.tenantId,
|
|
194
|
+
name: request?.rbac?.tenantName,
|
|
195
195
|
},
|
|
196
196
|
apiKey: {
|
|
197
|
-
id: request
|
|
198
|
-
name: request
|
|
199
|
-
}
|
|
197
|
+
id: request?.rbac?.apiKeyId,
|
|
198
|
+
name: request?.rbac?.apiKeyName,
|
|
199
|
+
},
|
|
200
|
+
session: request?.rbac?.session,
|
|
200
201
|
},
|
|
201
202
|
ip: request.ip,
|
|
202
203
|
userAgent: request.headers['user-agent'],
|
|
203
|
-
sessionId: request.rbac.session,
|
|
204
204
|
requestId: request.id,
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
+
|
|
209
|
+
|
|
208
210
|
async onCreated(request: CustomRequest, item:T){
|
|
209
211
|
const requestData = this.extractRequestData(request)
|
|
212
|
+
const detail = `User ${requestData.user.username} created ${this.entityName}.`
|
|
210
213
|
const eventData : IDraxCrudEvent = {
|
|
211
214
|
action: 'created',
|
|
212
215
|
entity: this.entityName,
|
|
213
216
|
postItem: item,
|
|
214
217
|
preItem: null,
|
|
215
218
|
timestamp: new Date(),
|
|
219
|
+
detail: detail,
|
|
216
220
|
...requestData
|
|
217
221
|
}
|
|
218
222
|
this.eventEmitter.emitCrudEvent(eventData)
|
|
@@ -220,12 +224,14 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
220
224
|
|
|
221
225
|
async onUpdated(request: CustomRequest, preItem: T, postItem:T){
|
|
222
226
|
const requestData = this.extractRequestData(request)
|
|
227
|
+
const detail = `User ${requestData.user.username} updated ${this.entityName}.`
|
|
223
228
|
const eventData : IDraxCrudEvent = {
|
|
224
229
|
action: 'updated',
|
|
225
230
|
entity: this.entityName,
|
|
226
231
|
postItem: postItem,
|
|
227
232
|
preItem: preItem,
|
|
228
233
|
timestamp: new Date(),
|
|
234
|
+
detail: detail,
|
|
229
235
|
...requestData
|
|
230
236
|
}
|
|
231
237
|
this.eventEmitter.emitCrudEvent(eventData)
|
|
@@ -233,12 +239,14 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
233
239
|
|
|
234
240
|
async onDeleted(request: CustomRequest, item: T) {
|
|
235
241
|
const requestData = this.extractRequestData(request)
|
|
242
|
+
const detail = `User ${requestData.user.username} deleted ${this.entityName}.`
|
|
236
243
|
const eventData : IDraxCrudEvent = {
|
|
237
244
|
action: 'deleted',
|
|
238
245
|
entity: this.entityName,
|
|
239
246
|
postItem: null,
|
|
240
247
|
preItem: item,
|
|
241
248
|
timestamp: new Date(),
|
|
249
|
+
detail: detail,
|
|
242
250
|
...requestData
|
|
243
251
|
}
|
|
244
252
|
this.eventEmitter.emitCrudEvent(eventData)
|
|
@@ -246,12 +254,14 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
246
254
|
|
|
247
255
|
async onExported(request: CustomRequest, response: IDraxExportResponse) {
|
|
248
256
|
const requestData = this.extractRequestData(request)
|
|
257
|
+
const detail = `User ${requestData.user.username} exported ${this.entityName}.`
|
|
249
258
|
const eventData : IDraxCrudEvent = {
|
|
250
259
|
action: 'exported',
|
|
251
260
|
entity: this.entityName,
|
|
252
261
|
postItem: null,
|
|
253
262
|
preItem: null,
|
|
254
263
|
timestamp: new Date(),
|
|
264
|
+
detail: detail,
|
|
255
265
|
...requestData
|
|
256
266
|
}
|
|
257
267
|
this.eventEmitter.emitCrudEvent(eventData)
|
|
@@ -264,7 +274,7 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
264
274
|
const payload = request.body
|
|
265
275
|
this.applyUserAndTenantSetters(payload, request.rbac)
|
|
266
276
|
let item = await this.service.create(payload as C)
|
|
267
|
-
|
|
277
|
+
this.onCreated(request, item)
|
|
268
278
|
return item
|
|
269
279
|
} catch (e) {
|
|
270
280
|
this.handleError(e, reply)
|
|
@@ -305,7 +315,7 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
305
315
|
throw new NotFoundError()
|
|
306
316
|
}
|
|
307
317
|
|
|
308
|
-
|
|
318
|
+
this.onUpdated(request, preItem, item)
|
|
309
319
|
|
|
310
320
|
return item
|
|
311
321
|
} catch (e) {
|
|
@@ -343,7 +353,7 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
343
353
|
if (!item) {
|
|
344
354
|
throw new NotFoundError()
|
|
345
355
|
}
|
|
346
|
-
|
|
356
|
+
this.onUpdated(request, preItem, item)
|
|
347
357
|
return item
|
|
348
358
|
} catch (e) {
|
|
349
359
|
this.handleError(e, reply)
|
|
@@ -378,7 +388,7 @@ class AbstractFastifyController<T, C, U> extends CommonController {
|
|
|
378
388
|
|
|
379
389
|
await this.service.delete(id)
|
|
380
390
|
|
|
381
|
-
|
|
391
|
+
this.onDeleted(request, item)
|
|
382
392
|
|
|
383
393
|
reply.send({
|
|
384
394
|
id: id,
|