@forklaunch/implementation-iam-base 0.5.8 → 0.6.1
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/lib/domain/schemas/index.d.mts +334 -733
- package/lib/domain/schemas/index.d.ts +334 -733
- package/lib/domain/schemas/index.js +58 -90
- package/lib/domain/schemas/index.mjs +36 -40
- package/lib/domain/types/index.d.mts +100 -0
- package/lib/domain/types/index.d.ts +100 -0
- package/lib/domain/types/index.js +18 -0
- package/lib/domain/types/index.mjs +0 -0
- package/lib/eject/domain/types/index.ts +6 -0
- package/lib/eject/domain/types/organization.mapper.types.ts +29 -0
- package/lib/eject/domain/types/permission.mapper.types.ts +35 -0
- package/lib/eject/domain/types/role.mapper.types.ts +28 -0
- package/lib/eject/domain/types/user.mapper.types.ts +28 -0
- package/lib/eject/services/organization.service.ts +40 -80
- package/lib/eject/services/permission.service.ts +69 -116
- package/lib/eject/services/role.service.ts +40 -97
- package/lib/eject/services/user.service.ts +47 -95
- package/lib/services/index.d.mts +82 -495
- package/lib/services/index.d.ts +82 -495
- package/lib/services/index.js +246 -293
- package/lib/services/index.mjs +244 -266
- package/package.json +10 -10
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
RoleService
|
|
4
4
|
} from '@forklaunch/interfaces-iam/interfaces';
|
|
5
5
|
|
|
6
|
-
import { IdDto, IdsDto
|
|
6
|
+
import { IdDto, IdsDto } from '@forklaunch/common';
|
|
7
7
|
import {
|
|
8
8
|
evaluateTelemetryOptions,
|
|
9
9
|
MetricsDefinition,
|
|
@@ -11,23 +11,21 @@ import {
|
|
|
11
11
|
TelemetryOptions
|
|
12
12
|
} from '@forklaunch/core/http';
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
transformIntoInternalMapper
|
|
18
|
-
} from '@forklaunch/internal';
|
|
14
|
+
CreatePermissionDto,
|
|
15
|
+
UpdatePermissionDto
|
|
16
|
+
} from '@forklaunch/interfaces-iam/types';
|
|
19
17
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
20
18
|
import { EntityManager } from '@mikro-orm/core';
|
|
21
19
|
import { PermissionDtos } from '../domain/types/iamDto.types';
|
|
22
20
|
import { PermissionEntities } from '../domain/types/iamEntities.types';
|
|
21
|
+
import { PermissionMappers } from '../domain/types/permission.mapper.types';
|
|
23
22
|
|
|
24
23
|
export class BasePermissionService<
|
|
25
24
|
SchemaValidator extends AnySchemaValidator,
|
|
26
|
-
MapperEntities extends PermissionEntities,
|
|
27
|
-
|
|
25
|
+
MapperEntities extends PermissionEntities = PermissionEntities,
|
|
26
|
+
MapperDomains extends PermissionDtos = PermissionDtos
|
|
28
27
|
> implements PermissionService
|
|
29
28
|
{
|
|
30
|
-
protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
|
|
31
29
|
private evaluatedTelemetryOptions: {
|
|
32
30
|
logging?: boolean;
|
|
33
31
|
metrics?: boolean;
|
|
@@ -37,80 +35,14 @@ export class BasePermissionService<
|
|
|
37
35
|
protected roleServiceFactory: () => RoleService;
|
|
38
36
|
protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
|
|
39
37
|
protected schemaValidator: SchemaValidator;
|
|
40
|
-
protected mappers:
|
|
41
|
-
PermissionMapper: ResponseMapperConstructor<
|
|
42
|
-
SchemaValidator,
|
|
43
|
-
MapperDto['PermissionMapper'],
|
|
44
|
-
MapperEntities['PermissionMapper']
|
|
45
|
-
>;
|
|
46
|
-
CreatePermissionMapper: RequestMapperConstructor<
|
|
47
|
-
SchemaValidator,
|
|
48
|
-
MapperDto['CreatePermissionMapper'],
|
|
49
|
-
MapperEntities['CreatePermissionMapper'],
|
|
50
|
-
(
|
|
51
|
-
dto: MapperDto['CreatePermissionMapper'],
|
|
52
|
-
em: EntityManager
|
|
53
|
-
) => Promise<MapperEntities['CreatePermissionMapper']>
|
|
54
|
-
>;
|
|
55
|
-
UpdatePermissionMapper: RequestMapperConstructor<
|
|
56
|
-
SchemaValidator,
|
|
57
|
-
MapperDto['UpdatePermissionMapper'],
|
|
58
|
-
MapperEntities['UpdatePermissionMapper'],
|
|
59
|
-
(
|
|
60
|
-
dto: MapperDto['UpdatePermissionMapper'],
|
|
61
|
-
em: EntityManager
|
|
62
|
-
) => Promise<MapperEntities['UpdatePermissionMapper']>
|
|
63
|
-
>;
|
|
64
|
-
RoleEntityMapper: RequestMapperConstructor<
|
|
65
|
-
SchemaValidator,
|
|
66
|
-
MapperDto['RoleEntityMapper'],
|
|
67
|
-
MapperEntities['RoleEntityMapper'],
|
|
68
|
-
(
|
|
69
|
-
dto: MapperDto['RoleEntityMapper'],
|
|
70
|
-
em: EntityManager
|
|
71
|
-
) => Promise<MapperEntities['RoleEntityMapper']>
|
|
72
|
-
>;
|
|
73
|
-
};
|
|
38
|
+
protected mappers: PermissionMappers<MapperEntities, MapperDomains>;
|
|
74
39
|
|
|
75
40
|
constructor(
|
|
76
41
|
em: EntityManager,
|
|
77
42
|
roleServiceFactory: () => RoleService,
|
|
78
43
|
openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>,
|
|
79
44
|
schemaValidator: SchemaValidator,
|
|
80
|
-
mappers:
|
|
81
|
-
PermissionMapper: ResponseMapperConstructor<
|
|
82
|
-
SchemaValidator,
|
|
83
|
-
MapperDto['PermissionMapper'],
|
|
84
|
-
MapperEntities['PermissionMapper']
|
|
85
|
-
>;
|
|
86
|
-
CreatePermissionMapper: RequestMapperConstructor<
|
|
87
|
-
SchemaValidator,
|
|
88
|
-
MapperDto['CreatePermissionMapper'],
|
|
89
|
-
MapperEntities['CreatePermissionMapper'],
|
|
90
|
-
(
|
|
91
|
-
dto: MapperDto['CreatePermissionMapper'],
|
|
92
|
-
em: EntityManager
|
|
93
|
-
) => Promise<MapperEntities['CreatePermissionMapper']>
|
|
94
|
-
>;
|
|
95
|
-
UpdatePermissionMapper: RequestMapperConstructor<
|
|
96
|
-
SchemaValidator,
|
|
97
|
-
MapperDto['UpdatePermissionMapper'],
|
|
98
|
-
MapperEntities['UpdatePermissionMapper'],
|
|
99
|
-
(
|
|
100
|
-
dto: MapperDto['UpdatePermissionMapper'],
|
|
101
|
-
em: EntityManager
|
|
102
|
-
) => Promise<MapperEntities['UpdatePermissionMapper']>
|
|
103
|
-
>;
|
|
104
|
-
RoleEntityMapper: RequestMapperConstructor<
|
|
105
|
-
SchemaValidator,
|
|
106
|
-
MapperDto['RoleEntityMapper'],
|
|
107
|
-
MapperEntities['RoleEntityMapper'],
|
|
108
|
-
(
|
|
109
|
-
dto: MapperDto['RoleEntityMapper'],
|
|
110
|
-
em: EntityManager
|
|
111
|
-
) => Promise<MapperEntities['RoleEntityMapper']>
|
|
112
|
-
>;
|
|
113
|
-
},
|
|
45
|
+
mappers: PermissionMappers<MapperEntities, MapperDomains>,
|
|
114
46
|
options?: {
|
|
115
47
|
telemetry?: TelemetryOptions;
|
|
116
48
|
}
|
|
@@ -120,7 +52,6 @@ export class BasePermissionService<
|
|
|
120
52
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
121
53
|
this.schemaValidator = schemaValidator;
|
|
122
54
|
this.mappers = mappers;
|
|
123
|
-
this._mappers = transformIntoInternalMapper(mappers, schemaValidator);
|
|
124
55
|
this.evaluatedTelemetryOptions = options?.telemetry
|
|
125
56
|
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
126
57
|
: {
|
|
@@ -166,7 +97,7 @@ export class BasePermissionService<
|
|
|
166
97
|
(await this.roleServiceFactory().getBatchRoles(roles, em)).map(
|
|
167
98
|
async (role) => {
|
|
168
99
|
return (em ?? this.em).merge(
|
|
169
|
-
await this.
|
|
100
|
+
await this.mappers.RoleEntityMapper.toEntity(
|
|
170
101
|
role,
|
|
171
102
|
em ?? this.em
|
|
172
103
|
)
|
|
@@ -179,7 +110,7 @@ export class BasePermissionService<
|
|
|
179
110
|
// end: global helper functions
|
|
180
111
|
|
|
181
112
|
// start: createPermission helper functions
|
|
182
|
-
private async
|
|
113
|
+
private async createPermissionEntity({
|
|
183
114
|
permission,
|
|
184
115
|
addToRoles
|
|
185
116
|
}: {
|
|
@@ -197,18 +128,20 @@ export class BasePermissionService<
|
|
|
197
128
|
return { permission, roles };
|
|
198
129
|
}
|
|
199
130
|
|
|
200
|
-
private async
|
|
201
|
-
permissionDto:
|
|
202
|
-
em?: EntityManager
|
|
131
|
+
private async extractCreatePermissionEntityToEntityData(
|
|
132
|
+
permissionDto: CreatePermissionDto,
|
|
133
|
+
em?: EntityManager,
|
|
134
|
+
...args: unknown[]
|
|
203
135
|
): Promise<{
|
|
204
136
|
permission: MapperEntities['PermissionMapper'];
|
|
205
137
|
addToRoles: MapperEntities['RoleEntityMapper'][];
|
|
206
138
|
}> {
|
|
207
139
|
return {
|
|
208
140
|
permission: (em ?? this.em).merge(
|
|
209
|
-
await this.
|
|
141
|
+
await this.mappers.CreatePermissionMapper.toEntity(
|
|
210
142
|
permissionDto,
|
|
211
|
-
em ?? this.em
|
|
143
|
+
em ?? this.em,
|
|
144
|
+
...args
|
|
212
145
|
)
|
|
213
146
|
),
|
|
214
147
|
addToRoles: permissionDto.addToRolesIds
|
|
@@ -219,17 +152,22 @@ export class BasePermissionService<
|
|
|
219
152
|
// end: createPermission helper functions
|
|
220
153
|
|
|
221
154
|
async createPermission(
|
|
222
|
-
|
|
223
|
-
em?: EntityManager
|
|
224
|
-
|
|
155
|
+
createPermissionEntity: CreatePermissionDto,
|
|
156
|
+
em?: EntityManager,
|
|
157
|
+
...args: unknown[]
|
|
158
|
+
): Promise<MapperDomains['PermissionMapper']> {
|
|
225
159
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
226
160
|
this.openTelemetryCollector.info(
|
|
227
161
|
'Creating permission',
|
|
228
|
-
|
|
162
|
+
createPermissionEntity
|
|
229
163
|
);
|
|
230
164
|
}
|
|
231
|
-
const { permission, roles } = await this.
|
|
232
|
-
await this.
|
|
165
|
+
const { permission, roles } = await this.createPermissionEntity(
|
|
166
|
+
await this.extractCreatePermissionEntityToEntityData(
|
|
167
|
+
createPermissionEntity,
|
|
168
|
+
em,
|
|
169
|
+
...args
|
|
170
|
+
)
|
|
233
171
|
);
|
|
234
172
|
|
|
235
173
|
if (em) {
|
|
@@ -238,13 +176,13 @@ export class BasePermissionService<
|
|
|
238
176
|
await this.em.persistAndFlush([permission, ...roles]);
|
|
239
177
|
}
|
|
240
178
|
|
|
241
|
-
return this.
|
|
179
|
+
return this.mappers.PermissionMapper.toDto(permission);
|
|
242
180
|
}
|
|
243
181
|
|
|
244
182
|
async createBatchPermissions(
|
|
245
|
-
permissionDtos:
|
|
183
|
+
permissionDtos: CreatePermissionDto[],
|
|
246
184
|
em?: EntityManager
|
|
247
|
-
): Promise<
|
|
185
|
+
): Promise<MapperDomains['PermissionMapper'][]> {
|
|
248
186
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
249
187
|
this.openTelemetryCollector.info(
|
|
250
188
|
'Creating batch permissions',
|
|
@@ -253,13 +191,27 @@ export class BasePermissionService<
|
|
|
253
191
|
}
|
|
254
192
|
const rolesCache: Record<string, MapperEntities['RoleEntityMapper']> = {};
|
|
255
193
|
const permissions: MapperEntities['PermissionMapper'][] = [];
|
|
256
|
-
permissionDtos.map(async (
|
|
257
|
-
const { permission, roles } = await this.
|
|
258
|
-
await this.
|
|
259
|
-
|
|
194
|
+
permissionDtos.map(async (createPermissionEntity) => {
|
|
195
|
+
const { permission, roles } = await this.createPermissionEntity(
|
|
196
|
+
await this.extractCreatePermissionEntityToEntityData(
|
|
197
|
+
createPermissionEntity,
|
|
260
198
|
em
|
|
261
199
|
)
|
|
262
200
|
);
|
|
201
|
+
await Promise.all(
|
|
202
|
+
roles.map(async (role) => {
|
|
203
|
+
if (role.permissions.isInitialized()) {
|
|
204
|
+
return role.permissions.init();
|
|
205
|
+
}
|
|
206
|
+
})
|
|
207
|
+
);
|
|
208
|
+
await Promise.all(
|
|
209
|
+
roles.map(async (role) => {
|
|
210
|
+
if (role.permissions.isInitialized()) {
|
|
211
|
+
return role.permissions.init();
|
|
212
|
+
}
|
|
213
|
+
})
|
|
214
|
+
);
|
|
263
215
|
roles.forEach((role) => {
|
|
264
216
|
if (
|
|
265
217
|
rolesCache[role.id] &&
|
|
@@ -286,7 +238,7 @@ export class BasePermissionService<
|
|
|
286
238
|
|
|
287
239
|
return Promise.all(
|
|
288
240
|
permissions.map(async (permission) =>
|
|
289
|
-
this.
|
|
241
|
+
this.mappers.PermissionMapper.toDto(permission)
|
|
290
242
|
)
|
|
291
243
|
);
|
|
292
244
|
}
|
|
@@ -294,12 +246,12 @@ export class BasePermissionService<
|
|
|
294
246
|
async getPermission(
|
|
295
247
|
idDto: IdDto,
|
|
296
248
|
em?: EntityManager
|
|
297
|
-
): Promise<
|
|
249
|
+
): Promise<MapperDomains['PermissionMapper']> {
|
|
298
250
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
299
251
|
this.openTelemetryCollector.info('Getting permission', idDto);
|
|
300
252
|
}
|
|
301
253
|
const permission = await (em ?? this.em).findOneOrFail('Permission', idDto);
|
|
302
|
-
return this.
|
|
254
|
+
return this.mappers.PermissionMapper.toDto(
|
|
303
255
|
permission as MapperEntities['PermissionMapper']
|
|
304
256
|
);
|
|
305
257
|
}
|
|
@@ -307,13 +259,13 @@ export class BasePermissionService<
|
|
|
307
259
|
async getBatchPermissions(
|
|
308
260
|
idsDto: IdsDto,
|
|
309
261
|
em?: EntityManager
|
|
310
|
-
): Promise<
|
|
262
|
+
): Promise<MapperDomains['PermissionMapper'][]> {
|
|
311
263
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
312
264
|
this.openTelemetryCollector.info('Getting batch permissions', idsDto);
|
|
313
265
|
}
|
|
314
266
|
return Promise.all(
|
|
315
267
|
(await (em ?? this.em).find('Permission', idsDto)).map((permission) =>
|
|
316
|
-
this.
|
|
268
|
+
this.mappers.PermissionMapper.toDto(
|
|
317
269
|
permission as MapperEntities['PermissionMapper']
|
|
318
270
|
)
|
|
319
271
|
)
|
|
@@ -322,17 +274,18 @@ export class BasePermissionService<
|
|
|
322
274
|
|
|
323
275
|
// start: updatePermission helper functions
|
|
324
276
|
private updatePermissionDto = async (
|
|
325
|
-
permissionDto:
|
|
326
|
-
em?: EntityManager
|
|
277
|
+
permissionDto: UpdatePermissionDto,
|
|
278
|
+
em?: EntityManager,
|
|
279
|
+
...args: unknown[]
|
|
327
280
|
): Promise<{
|
|
328
281
|
permission: MapperEntities['PermissionMapper'];
|
|
329
282
|
roles: MapperEntities['RoleEntityMapper'][];
|
|
330
283
|
}> => {
|
|
331
|
-
const permission =
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
284
|
+
const permission = await this.mappers.UpdatePermissionMapper.toEntity(
|
|
285
|
+
permissionDto,
|
|
286
|
+
em ?? this.em,
|
|
287
|
+
...args
|
|
288
|
+
);
|
|
336
289
|
const addToRoles = permissionDto.addToRolesIds
|
|
337
290
|
? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
|
|
338
291
|
: [];
|
|
@@ -357,9 +310,9 @@ export class BasePermissionService<
|
|
|
357
310
|
// end: updatePermission helper functions
|
|
358
311
|
|
|
359
312
|
async updatePermission(
|
|
360
|
-
permissionDto:
|
|
313
|
+
permissionDto: UpdatePermissionDto,
|
|
361
314
|
em?: EntityManager
|
|
362
|
-
): Promise<
|
|
315
|
+
): Promise<MapperDomains['PermissionMapper']> {
|
|
363
316
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
364
317
|
this.openTelemetryCollector.info('Updating permission', permissionDto);
|
|
365
318
|
}
|
|
@@ -372,13 +325,13 @@ export class BasePermissionService<
|
|
|
372
325
|
await this.em.persistAndFlush(entities);
|
|
373
326
|
}
|
|
374
327
|
|
|
375
|
-
return this.
|
|
328
|
+
return this.mappers.PermissionMapper.toDto(permission);
|
|
376
329
|
}
|
|
377
330
|
|
|
378
331
|
async updateBatchPermissions(
|
|
379
|
-
permissionDtos:
|
|
332
|
+
permissionDtos: UpdatePermissionDto[],
|
|
380
333
|
em?: EntityManager
|
|
381
|
-
): Promise<
|
|
334
|
+
): Promise<MapperDomains['PermissionMapper'][]> {
|
|
382
335
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
383
336
|
this.openTelemetryCollector.info(
|
|
384
337
|
'Updating batch permissions',
|
|
@@ -418,7 +371,7 @@ export class BasePermissionService<
|
|
|
418
371
|
|
|
419
372
|
return Promise.all(
|
|
420
373
|
permissions.map((permission) =>
|
|
421
|
-
this.
|
|
374
|
+
this.mappers.PermissionMapper.toDto(permission)
|
|
422
375
|
)
|
|
423
376
|
);
|
|
424
377
|
}
|
|
@@ -7,25 +7,23 @@ import {
|
|
|
7
7
|
import { RoleService } from '@forklaunch/interfaces-iam/interfaces';
|
|
8
8
|
import { EntityManager } from '@mikro-orm/core';
|
|
9
9
|
|
|
10
|
-
import { IdDto, IdsDto
|
|
11
|
-
import { RoleDto } from '@forklaunch/interfaces-iam/types';
|
|
10
|
+
import { IdDto, IdsDto } from '@forklaunch/common';
|
|
12
11
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from '@forklaunch/internal';
|
|
12
|
+
CreateRoleDto,
|
|
13
|
+
RoleDto,
|
|
14
|
+
UpdateRoleDto
|
|
15
|
+
} from '@forklaunch/interfaces-iam/types';
|
|
18
16
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
19
17
|
import { RoleDtos } from '../domain/types/iamDto.types';
|
|
20
18
|
import { RoleEntities } from '../domain/types/iamEntities.types';
|
|
19
|
+
import { RoleMappers } from '../domain/types/role.mapper.types';
|
|
21
20
|
|
|
22
21
|
export class BaseRoleService<
|
|
23
22
|
SchemaValidator extends AnySchemaValidator,
|
|
24
|
-
MapperEntities extends RoleEntities,
|
|
25
|
-
|
|
23
|
+
MapperEntities extends RoleEntities = RoleEntities,
|
|
24
|
+
MapperDomains extends RoleDtos = RoleDtos
|
|
26
25
|
> implements RoleService
|
|
27
26
|
{
|
|
28
|
-
protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
|
|
29
27
|
private evaluatedTelemetryOptions: {
|
|
30
28
|
logging?: boolean;
|
|
31
29
|
metrics?: boolean;
|
|
@@ -34,61 +32,13 @@ export class BaseRoleService<
|
|
|
34
32
|
public em: EntityManager;
|
|
35
33
|
protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
|
|
36
34
|
protected schemaValidator: SchemaValidator;
|
|
37
|
-
protected mappers:
|
|
38
|
-
RoleMapper: ResponseMapperConstructor<
|
|
39
|
-
SchemaValidator,
|
|
40
|
-
MapperDto['RoleMapper'],
|
|
41
|
-
MapperEntities['RoleMapper']
|
|
42
|
-
>;
|
|
43
|
-
CreateRoleMapper: RequestMapperConstructor<
|
|
44
|
-
SchemaValidator,
|
|
45
|
-
MapperDto['CreateRoleMapper'],
|
|
46
|
-
MapperEntities['CreateRoleMapper'],
|
|
47
|
-
(
|
|
48
|
-
dto: MapperDto['CreateRoleMapper'],
|
|
49
|
-
em: EntityManager
|
|
50
|
-
) => Promise<MapperEntities['CreateRoleMapper']>
|
|
51
|
-
>;
|
|
52
|
-
UpdateRoleMapper: RequestMapperConstructor<
|
|
53
|
-
SchemaValidator,
|
|
54
|
-
MapperDto['UpdateRoleMapper'],
|
|
55
|
-
MapperEntities['UpdateRoleMapper'],
|
|
56
|
-
(
|
|
57
|
-
dto: MapperDto['UpdateRoleMapper'],
|
|
58
|
-
em: EntityManager
|
|
59
|
-
) => Promise<MapperEntities['UpdateRoleMapper']>
|
|
60
|
-
>;
|
|
61
|
-
};
|
|
35
|
+
protected mappers: RoleMappers<MapperEntities, MapperDomains>;
|
|
62
36
|
|
|
63
37
|
constructor(
|
|
64
38
|
em: EntityManager,
|
|
65
39
|
openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>,
|
|
66
40
|
schemaValidator: SchemaValidator,
|
|
67
|
-
mappers:
|
|
68
|
-
RoleMapper: ResponseMapperConstructor<
|
|
69
|
-
SchemaValidator,
|
|
70
|
-
MapperDto['RoleMapper'],
|
|
71
|
-
MapperEntities['RoleMapper']
|
|
72
|
-
>;
|
|
73
|
-
CreateRoleMapper: RequestMapperConstructor<
|
|
74
|
-
SchemaValidator,
|
|
75
|
-
MapperDto['CreateRoleMapper'],
|
|
76
|
-
MapperEntities['CreateRoleMapper'],
|
|
77
|
-
(
|
|
78
|
-
dto: MapperDto['CreateRoleMapper'],
|
|
79
|
-
em: EntityManager
|
|
80
|
-
) => Promise<MapperEntities['CreateRoleMapper']>
|
|
81
|
-
>;
|
|
82
|
-
UpdateRoleMapper: RequestMapperConstructor<
|
|
83
|
-
SchemaValidator,
|
|
84
|
-
MapperDto['UpdateRoleMapper'],
|
|
85
|
-
MapperEntities['UpdateRoleMapper'],
|
|
86
|
-
(
|
|
87
|
-
dto: MapperDto['UpdateRoleMapper'],
|
|
88
|
-
em: EntityManager
|
|
89
|
-
) => Promise<MapperEntities['UpdateRoleMapper']>
|
|
90
|
-
>;
|
|
91
|
-
},
|
|
41
|
+
mappers: RoleMappers<MapperEntities, MapperDomains>,
|
|
92
42
|
options?: {
|
|
93
43
|
telemetry?: TelemetryOptions;
|
|
94
44
|
}
|
|
@@ -97,7 +47,6 @@ export class BaseRoleService<
|
|
|
97
47
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
98
48
|
this.schemaValidator = schemaValidator;
|
|
99
49
|
this.mappers = mappers;
|
|
100
|
-
this._mappers = transformIntoInternalMapper(mappers, schemaValidator);
|
|
101
50
|
this.evaluatedTelemetryOptions = options?.telemetry
|
|
102
51
|
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
103
52
|
: {
|
|
@@ -108,15 +57,17 @@ export class BaseRoleService<
|
|
|
108
57
|
}
|
|
109
58
|
|
|
110
59
|
async createRole(
|
|
111
|
-
roleDto:
|
|
112
|
-
em?: EntityManager
|
|
113
|
-
|
|
60
|
+
roleDto: CreateRoleDto,
|
|
61
|
+
em?: EntityManager,
|
|
62
|
+
...args: unknown[]
|
|
63
|
+
): Promise<RoleDto> {
|
|
114
64
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
115
65
|
this.openTelemetryCollector.info('Creating role', roleDto);
|
|
116
66
|
}
|
|
117
|
-
const role = await this.
|
|
67
|
+
const role = await this.mappers.CreateRoleMapper.toEntity(
|
|
118
68
|
roleDto,
|
|
119
|
-
em ?? this.em
|
|
69
|
+
em ?? this.em,
|
|
70
|
+
...args
|
|
120
71
|
);
|
|
121
72
|
|
|
122
73
|
if (em) {
|
|
@@ -125,23 +76,21 @@ export class BaseRoleService<
|
|
|
125
76
|
await this.em.persistAndFlush(role);
|
|
126
77
|
}
|
|
127
78
|
|
|
128
|
-
return this.
|
|
79
|
+
return this.mappers.RoleMapper.toDto(role);
|
|
129
80
|
}
|
|
130
81
|
|
|
131
82
|
async createBatchRoles(
|
|
132
|
-
roleDtos:
|
|
133
|
-
em?: EntityManager
|
|
134
|
-
|
|
83
|
+
roleDtos: CreateRoleDto[],
|
|
84
|
+
em?: EntityManager,
|
|
85
|
+
...args: unknown[]
|
|
86
|
+
): Promise<RoleDto[]> {
|
|
135
87
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
136
88
|
this.openTelemetryCollector.info('Creating batch roles', roleDtos);
|
|
137
89
|
}
|
|
138
90
|
|
|
139
91
|
const roles = await Promise.all(
|
|
140
92
|
roleDtos.map(async (roleDto) =>
|
|
141
|
-
this.
|
|
142
|
-
roleDto,
|
|
143
|
-
em ?? this.em
|
|
144
|
-
)
|
|
93
|
+
this.mappers.CreateRoleMapper.toEntity(roleDto, em ?? this.em, ...args)
|
|
145
94
|
)
|
|
146
95
|
);
|
|
147
96
|
|
|
@@ -152,7 +101,7 @@ export class BaseRoleService<
|
|
|
152
101
|
}
|
|
153
102
|
|
|
154
103
|
return Promise.all(
|
|
155
|
-
roles.map((role) => this.
|
|
104
|
+
roles.map((role) => this.mappers.RoleMapper.toDto(role))
|
|
156
105
|
);
|
|
157
106
|
}
|
|
158
107
|
|
|
@@ -165,9 +114,7 @@ export class BaseRoleService<
|
|
|
165
114
|
populate: ['id', '*']
|
|
166
115
|
});
|
|
167
116
|
|
|
168
|
-
return this.
|
|
169
|
-
role as MapperEntities['RoleMapper']
|
|
170
|
-
);
|
|
117
|
+
return this.mappers.RoleMapper.toDto(role as MapperEntities['RoleMapper']);
|
|
171
118
|
}
|
|
172
119
|
|
|
173
120
|
async getBatchRoles({ ids }: IdsDto, em?: EntityManager): Promise<RoleDto[]> {
|
|
@@ -187,24 +134,24 @@ export class BaseRoleService<
|
|
|
187
134
|
}
|
|
188
135
|
)
|
|
189
136
|
).map((role) =>
|
|
190
|
-
this.
|
|
191
|
-
role as MapperEntities['RoleMapper']
|
|
192
|
-
)
|
|
137
|
+
this.mappers.RoleMapper.toDto(role as MapperEntities['RoleMapper'])
|
|
193
138
|
)
|
|
194
139
|
);
|
|
195
140
|
}
|
|
196
141
|
|
|
197
142
|
async updateRole(
|
|
198
|
-
roleDto:
|
|
199
|
-
em?: EntityManager
|
|
200
|
-
|
|
143
|
+
roleDto: UpdateRoleDto,
|
|
144
|
+
em?: EntityManager,
|
|
145
|
+
...args: unknown[]
|
|
146
|
+
): Promise<RoleDto> {
|
|
201
147
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
202
148
|
this.openTelemetryCollector.info('Updating role', roleDto);
|
|
203
149
|
}
|
|
204
150
|
|
|
205
|
-
const role = await this.
|
|
151
|
+
const role = await this.mappers.UpdateRoleMapper.toEntity(
|
|
206
152
|
roleDto,
|
|
207
|
-
em ?? this.em
|
|
153
|
+
em ?? this.em,
|
|
154
|
+
...args
|
|
208
155
|
);
|
|
209
156
|
|
|
210
157
|
if (em) {
|
|
@@ -213,23 +160,21 @@ export class BaseRoleService<
|
|
|
213
160
|
await this.em.persistAndFlush(role);
|
|
214
161
|
}
|
|
215
162
|
|
|
216
|
-
return this.
|
|
163
|
+
return this.mappers.RoleMapper.toDto(role);
|
|
217
164
|
}
|
|
218
165
|
|
|
219
166
|
async updateBatchRoles(
|
|
220
|
-
roleDtos:
|
|
221
|
-
em?: EntityManager
|
|
222
|
-
|
|
167
|
+
roleDtos: UpdateRoleDto[],
|
|
168
|
+
em?: EntityManager,
|
|
169
|
+
...args: unknown[]
|
|
170
|
+
): Promise<RoleDto[]> {
|
|
223
171
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
224
172
|
this.openTelemetryCollector.info('Updating batch roles', roleDtos);
|
|
225
173
|
}
|
|
226
174
|
|
|
227
175
|
const roles = await Promise.all(
|
|
228
176
|
roleDtos.map(async (roleDto) =>
|
|
229
|
-
this.
|
|
230
|
-
roleDto,
|
|
231
|
-
em ?? this.em
|
|
232
|
-
)
|
|
177
|
+
this.mappers.UpdateRoleMapper.toEntity(roleDto, em ?? this.em, ...args)
|
|
233
178
|
)
|
|
234
179
|
);
|
|
235
180
|
|
|
@@ -240,9 +185,7 @@ export class BaseRoleService<
|
|
|
240
185
|
}
|
|
241
186
|
return Promise.all(
|
|
242
187
|
roles.map((role) =>
|
|
243
|
-
this.
|
|
244
|
-
role as MapperEntities['RoleMapper']
|
|
245
|
-
)
|
|
188
|
+
this.mappers.RoleMapper.toDto(role as MapperEntities['RoleMapper'])
|
|
246
189
|
)
|
|
247
190
|
);
|
|
248
191
|
}
|