@forklaunch/implementation-iam-base 0.3.1 → 0.3.3
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 +847 -0
- package/lib/domain/schemas/index.d.ts +847 -0
- package/lib/{schemas → domain/schemas}/index.js +138 -104
- package/lib/{schemas → domain/schemas}/index.mjs +81 -77
- package/lib/eject/domain/schemas/organization.schema.ts +3 -3
- package/lib/eject/domain/schemas/permission.schema.ts +3 -3
- package/lib/eject/domain/schemas/role.schema.ts +3 -3
- package/lib/eject/domain/schemas/user.schema.ts +3 -3
- package/lib/eject/domain/types/iamDto.types.ts +43 -0
- package/lib/eject/domain/types/iamEntities.types.ts +49 -0
- package/lib/eject/services/organization.service.ts +41 -77
- package/lib/eject/services/permission.service.ts +80 -104
- package/lib/eject/services/role.service.ts +51 -81
- package/lib/eject/services/user.service.ts +51 -74
- package/lib/services/index.d.mts +495 -191
- package/lib/services/index.d.ts +495 -191
- package/lib/services/index.js +249 -212
- package/lib/services/index.mjs +222 -218
- package/package.json +20 -13
- package/lib/schemas/index.d.mts +0 -474
- package/lib/schemas/index.d.ts +0 -474
|
@@ -8,60 +8,24 @@ import { RoleService } from '@forklaunch/interfaces-iam/interfaces';
|
|
|
8
8
|
import { EntityManager } from '@mikro-orm/core';
|
|
9
9
|
|
|
10
10
|
import { IdDto, IdsDto, InstanceTypeRecord } from '@forklaunch/common';
|
|
11
|
+
import { RoleDto } from '@forklaunch/interfaces-iam/types';
|
|
11
12
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} from '@forklaunch/
|
|
17
|
-
import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
|
|
18
|
-
import {
|
|
19
|
-
CreateRoleDto,
|
|
20
|
-
RoleDto,
|
|
21
|
-
UpdateRoleDto
|
|
22
|
-
} from '@forklaunch/interfaces-iam/types';
|
|
13
|
+
InternalMapper,
|
|
14
|
+
RequestMapperConstructor,
|
|
15
|
+
ResponseMapperConstructor,
|
|
16
|
+
transformIntoInternalMapper
|
|
17
|
+
} from '@forklaunch/internal';
|
|
23
18
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
19
|
+
import { RoleDtos } from '../domain/types/iamDto.types';
|
|
20
|
+
import { RoleEntities } from '../domain/types/iamEntities.types';
|
|
24
21
|
|
|
25
22
|
export class BaseRoleService<
|
|
26
23
|
SchemaValidator extends AnySchemaValidator,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
RoleDtoMapper: RoleDto;
|
|
30
|
-
CreateRoleDtoMapper: CreateRoleDto;
|
|
31
|
-
UpdateRoleDtoMapper: UpdateRoleDto;
|
|
32
|
-
} = {
|
|
33
|
-
RoleDtoMapper: RoleDto;
|
|
34
|
-
CreateRoleDtoMapper: CreateRoleDto;
|
|
35
|
-
UpdateRoleDtoMapper: UpdateRoleDto;
|
|
36
|
-
},
|
|
37
|
-
Entities extends {
|
|
38
|
-
RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
|
|
39
|
-
CreateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
40
|
-
RoleDto,
|
|
41
|
-
'permissions'
|
|
42
|
-
>;
|
|
43
|
-
UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
44
|
-
RoleDto,
|
|
45
|
-
'permissions'
|
|
46
|
-
>;
|
|
47
|
-
} = {
|
|
48
|
-
RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
|
|
49
|
-
CreateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
50
|
-
RoleDto,
|
|
51
|
-
'permissions'
|
|
52
|
-
>;
|
|
53
|
-
UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
54
|
-
RoleDto,
|
|
55
|
-
'permissions'
|
|
56
|
-
>;
|
|
57
|
-
}
|
|
24
|
+
MapperEntities extends RoleEntities,
|
|
25
|
+
MapperDto extends RoleDtos = RoleDtos
|
|
58
26
|
> implements RoleService
|
|
59
27
|
{
|
|
60
|
-
|
|
61
|
-
InstanceTypeRecord<typeof this.mappers>,
|
|
62
|
-
Entities,
|
|
63
|
-
Dto
|
|
64
|
-
>;
|
|
28
|
+
protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
|
|
65
29
|
private evaluatedTelemetryOptions: {
|
|
66
30
|
logging?: boolean;
|
|
67
31
|
metrics?: boolean;
|
|
@@ -70,30 +34,38 @@ export class BaseRoleService<
|
|
|
70
34
|
|
|
71
35
|
constructor(
|
|
72
36
|
public em: EntityManager,
|
|
73
|
-
protected openTelemetryCollector: OpenTelemetryCollector<
|
|
37
|
+
protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>,
|
|
74
38
|
protected schemaValidator: SchemaValidator,
|
|
75
39
|
protected mappers: {
|
|
76
|
-
|
|
40
|
+
RoleMapper: ResponseMapperConstructor<
|
|
77
41
|
SchemaValidator,
|
|
78
|
-
|
|
79
|
-
|
|
42
|
+
MapperDto['RoleMapper'],
|
|
43
|
+
MapperEntities['RoleMapper']
|
|
80
44
|
>;
|
|
81
|
-
|
|
45
|
+
CreateRoleMapper: RequestMapperConstructor<
|
|
82
46
|
SchemaValidator,
|
|
83
|
-
|
|
84
|
-
|
|
47
|
+
MapperDto['CreateRoleMapper'],
|
|
48
|
+
MapperEntities['CreateRoleMapper'],
|
|
49
|
+
(
|
|
50
|
+
dto: MapperDto['CreateRoleMapper'],
|
|
51
|
+
em: EntityManager
|
|
52
|
+
) => Promise<MapperEntities['CreateRoleMapper']>
|
|
85
53
|
>;
|
|
86
|
-
|
|
54
|
+
UpdateRoleMapper: RequestMapperConstructor<
|
|
87
55
|
SchemaValidator,
|
|
88
|
-
|
|
89
|
-
|
|
56
|
+
MapperDto['UpdateRoleMapper'],
|
|
57
|
+
MapperEntities['UpdateRoleMapper'],
|
|
58
|
+
(
|
|
59
|
+
dto: MapperDto['UpdateRoleMapper'],
|
|
60
|
+
em: EntityManager
|
|
61
|
+
) => Promise<MapperEntities['UpdateRoleMapper']>
|
|
90
62
|
>;
|
|
91
63
|
},
|
|
92
64
|
options?: {
|
|
93
65
|
telemetry?: TelemetryOptions;
|
|
94
66
|
}
|
|
95
67
|
) {
|
|
96
|
-
this
|
|
68
|
+
this._mappers = transformIntoInternalMapper(mappers, schemaValidator);
|
|
97
69
|
this.evaluatedTelemetryOptions = options?.telemetry
|
|
98
70
|
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
99
71
|
: {
|
|
@@ -104,13 +76,13 @@ export class BaseRoleService<
|
|
|
104
76
|
}
|
|
105
77
|
|
|
106
78
|
async createRole(
|
|
107
|
-
roleDto:
|
|
79
|
+
roleDto: MapperDto['CreateRoleMapper'],
|
|
108
80
|
em?: EntityManager
|
|
109
|
-
): Promise<
|
|
81
|
+
): Promise<MapperDto['RoleMapper']> {
|
|
110
82
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
111
83
|
this.openTelemetryCollector.info('Creating role', roleDto);
|
|
112
84
|
}
|
|
113
|
-
const role = await this
|
|
85
|
+
const role = await this._mappers.CreateRoleMapper.deserializeDtoToEntity(
|
|
114
86
|
roleDto,
|
|
115
87
|
em ?? this.em
|
|
116
88
|
);
|
|
@@ -121,20 +93,20 @@ export class BaseRoleService<
|
|
|
121
93
|
await this.em.persistAndFlush(role);
|
|
122
94
|
}
|
|
123
95
|
|
|
124
|
-
return this
|
|
96
|
+
return this._mappers.RoleMapper.serializeEntityToDto(role);
|
|
125
97
|
}
|
|
126
98
|
|
|
127
99
|
async createBatchRoles(
|
|
128
|
-
roleDtos:
|
|
100
|
+
roleDtos: MapperDto['CreateRoleMapper'][],
|
|
129
101
|
em?: EntityManager
|
|
130
|
-
): Promise<
|
|
102
|
+
): Promise<MapperDto['RoleMapper'][]> {
|
|
131
103
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
132
104
|
this.openTelemetryCollector.info('Creating batch roles', roleDtos);
|
|
133
105
|
}
|
|
134
106
|
|
|
135
107
|
const roles = await Promise.all(
|
|
136
108
|
roleDtos.map(async (roleDto) =>
|
|
137
|
-
this
|
|
109
|
+
this._mappers.CreateRoleMapper.deserializeDtoToEntity(
|
|
138
110
|
roleDto,
|
|
139
111
|
em ?? this.em
|
|
140
112
|
)
|
|
@@ -148,9 +120,7 @@ export class BaseRoleService<
|
|
|
148
120
|
}
|
|
149
121
|
|
|
150
122
|
return Promise.all(
|
|
151
|
-
roles.map((role) =>
|
|
152
|
-
this.#mappers.RoleDtoMapper.serializeEntityToDto(role)
|
|
153
|
-
)
|
|
123
|
+
roles.map((role) => this._mappers.RoleMapper.serializeEntityToDto(role))
|
|
154
124
|
);
|
|
155
125
|
}
|
|
156
126
|
|
|
@@ -163,8 +133,8 @@ export class BaseRoleService<
|
|
|
163
133
|
populate: ['id', '*']
|
|
164
134
|
});
|
|
165
135
|
|
|
166
|
-
return this
|
|
167
|
-
role as
|
|
136
|
+
return this._mappers.RoleMapper.serializeEntityToDto(
|
|
137
|
+
role as MapperEntities['RoleMapper']
|
|
168
138
|
);
|
|
169
139
|
}
|
|
170
140
|
|
|
@@ -185,22 +155,22 @@ export class BaseRoleService<
|
|
|
185
155
|
}
|
|
186
156
|
)
|
|
187
157
|
).map((role) =>
|
|
188
|
-
this
|
|
189
|
-
role as
|
|
158
|
+
this._mappers.RoleMapper.serializeEntityToDto(
|
|
159
|
+
role as MapperEntities['RoleMapper']
|
|
190
160
|
)
|
|
191
161
|
)
|
|
192
162
|
);
|
|
193
163
|
}
|
|
194
164
|
|
|
195
165
|
async updateRole(
|
|
196
|
-
roleDto:
|
|
166
|
+
roleDto: MapperDto['UpdateRoleMapper'],
|
|
197
167
|
em?: EntityManager
|
|
198
|
-
): Promise<
|
|
168
|
+
): Promise<MapperDto['RoleMapper']> {
|
|
199
169
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
200
170
|
this.openTelemetryCollector.info('Updating role', roleDto);
|
|
201
171
|
}
|
|
202
172
|
|
|
203
|
-
const role = await this
|
|
173
|
+
const role = await this._mappers.UpdateRoleMapper.deserializeDtoToEntity(
|
|
204
174
|
roleDto,
|
|
205
175
|
em ?? this.em
|
|
206
176
|
);
|
|
@@ -211,20 +181,20 @@ export class BaseRoleService<
|
|
|
211
181
|
await this.em.persistAndFlush(role);
|
|
212
182
|
}
|
|
213
183
|
|
|
214
|
-
return this
|
|
184
|
+
return this._mappers.RoleMapper.serializeEntityToDto(role);
|
|
215
185
|
}
|
|
216
186
|
|
|
217
187
|
async updateBatchRoles(
|
|
218
|
-
roleDtos:
|
|
188
|
+
roleDtos: MapperDto['UpdateRoleMapper'][],
|
|
219
189
|
em?: EntityManager
|
|
220
|
-
): Promise<
|
|
190
|
+
): Promise<MapperDto['RoleMapper'][]> {
|
|
221
191
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
222
192
|
this.openTelemetryCollector.info('Updating batch roles', roleDtos);
|
|
223
193
|
}
|
|
224
194
|
|
|
225
195
|
const roles = await Promise.all(
|
|
226
196
|
roleDtos.map(async (roleDto) =>
|
|
227
|
-
this
|
|
197
|
+
this._mappers.UpdateRoleMapper.deserializeDtoToEntity(
|
|
228
198
|
roleDto,
|
|
229
199
|
em ?? this.em
|
|
230
200
|
)
|
|
@@ -238,8 +208,8 @@ export class BaseRoleService<
|
|
|
238
208
|
}
|
|
239
209
|
return Promise.all(
|
|
240
210
|
roles.map((role) =>
|
|
241
|
-
this
|
|
242
|
-
role as
|
|
211
|
+
this._mappers.RoleMapper.serializeEntityToDto(
|
|
212
|
+
role as MapperEntities['RoleMapper']
|
|
243
213
|
)
|
|
244
214
|
)
|
|
245
215
|
);
|
|
@@ -11,50 +11,26 @@ import {
|
|
|
11
11
|
OpenTelemetryCollector,
|
|
12
12
|
TelemetryOptions
|
|
13
13
|
} from '@forklaunch/core/http';
|
|
14
|
+
import { UpdateUserDto } from '@forklaunch/interfaces-iam/types';
|
|
14
15
|
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} from '@forklaunch/
|
|
20
|
-
import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
|
|
21
|
-
import {
|
|
22
|
-
CreateUserDto,
|
|
23
|
-
UpdateUserDto,
|
|
24
|
-
UserDto
|
|
25
|
-
} from '@forklaunch/interfaces-iam/types';
|
|
16
|
+
InternalMapper,
|
|
17
|
+
RequestMapperConstructor,
|
|
18
|
+
ResponseMapperConstructor,
|
|
19
|
+
transformIntoInternalMapper
|
|
20
|
+
} from '@forklaunch/internal';
|
|
26
21
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
27
22
|
import { EntityManager } from '@mikro-orm/core';
|
|
23
|
+
import { UserDtos } from '../domain/types/iamDto.types';
|
|
24
|
+
import { UserEntities } from '../domain/types/iamEntities.types';
|
|
28
25
|
|
|
29
26
|
export class BaseUserService<
|
|
30
27
|
SchemaValidator extends AnySchemaValidator,
|
|
31
28
|
OrganizationStatus,
|
|
32
|
-
|
|
33
|
-
Dto extends
|
|
34
|
-
UserDtoMapper: UserDto;
|
|
35
|
-
CreateUserDtoMapper: CreateUserDto;
|
|
36
|
-
UpdateUserDtoMapper: UpdateUserDto;
|
|
37
|
-
} = {
|
|
38
|
-
UserDtoMapper: UserDto;
|
|
39
|
-
CreateUserDtoMapper: CreateUserDto;
|
|
40
|
-
UpdateUserDtoMapper: UpdateUserDto;
|
|
41
|
-
},
|
|
42
|
-
Entities extends {
|
|
43
|
-
UserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
|
|
44
|
-
CreateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
|
|
45
|
-
UpdateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
|
|
46
|
-
} = {
|
|
47
|
-
UserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
|
|
48
|
-
CreateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
|
|
49
|
-
UpdateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
|
|
50
|
-
}
|
|
29
|
+
Entities extends UserEntities,
|
|
30
|
+
Dto extends UserDtos = UserDtos
|
|
51
31
|
> implements UserService
|
|
52
32
|
{
|
|
53
|
-
|
|
54
|
-
InstanceTypeRecord<typeof this.mappers>,
|
|
55
|
-
Entities,
|
|
56
|
-
Dto
|
|
57
|
-
>;
|
|
33
|
+
protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
|
|
58
34
|
private evaluatedTelemetryOptions: {
|
|
59
35
|
logging?: boolean;
|
|
60
36
|
metrics?: boolean;
|
|
@@ -66,30 +42,38 @@ export class BaseUserService<
|
|
|
66
42
|
protected passwordEncryptionPublicKeyPath: string,
|
|
67
43
|
protected roleServiceFactory: () => RoleService,
|
|
68
44
|
protected organizationServiceFactory: () => OrganizationService<OrganizationStatus>,
|
|
69
|
-
protected openTelemetryCollector: OpenTelemetryCollector<
|
|
45
|
+
protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>,
|
|
70
46
|
protected schemaValidator: SchemaValidator,
|
|
71
47
|
protected mappers: {
|
|
72
|
-
|
|
48
|
+
UserMapper: ResponseMapperConstructor<
|
|
73
49
|
SchemaValidator,
|
|
74
|
-
Dto['
|
|
75
|
-
Entities['
|
|
50
|
+
Dto['UserMapper'],
|
|
51
|
+
Entities['UserMapper']
|
|
76
52
|
>;
|
|
77
|
-
|
|
53
|
+
CreateUserMapper: RequestMapperConstructor<
|
|
78
54
|
SchemaValidator,
|
|
79
|
-
Dto['
|
|
80
|
-
Entities['
|
|
55
|
+
Dto['CreateUserMapper'],
|
|
56
|
+
Entities['CreateUserMapper'],
|
|
57
|
+
(
|
|
58
|
+
dto: Dto['CreateUserMapper'],
|
|
59
|
+
em: EntityManager
|
|
60
|
+
) => Promise<Entities['CreateUserMapper']>
|
|
81
61
|
>;
|
|
82
|
-
|
|
62
|
+
UpdateUserMapper: RequestMapperConstructor<
|
|
83
63
|
SchemaValidator,
|
|
84
|
-
Dto['
|
|
85
|
-
Entities['
|
|
64
|
+
Dto['UpdateUserMapper'],
|
|
65
|
+
Entities['UpdateUserMapper'],
|
|
66
|
+
(
|
|
67
|
+
dto: Dto['UpdateUserMapper'],
|
|
68
|
+
em: EntityManager
|
|
69
|
+
) => Promise<Entities['UpdateUserMapper']>
|
|
86
70
|
>;
|
|
87
71
|
},
|
|
88
72
|
readonly options?: {
|
|
89
73
|
telemetry?: TelemetryOptions;
|
|
90
74
|
}
|
|
91
75
|
) {
|
|
92
|
-
this
|
|
76
|
+
this._mappers = transformIntoInternalMapper(mappers, schemaValidator);
|
|
93
77
|
this.evaluatedTelemetryOptions = options?.telemetry
|
|
94
78
|
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
95
79
|
: {
|
|
@@ -100,14 +84,14 @@ export class BaseUserService<
|
|
|
100
84
|
}
|
|
101
85
|
|
|
102
86
|
async createUser(
|
|
103
|
-
userDto: Dto['
|
|
87
|
+
userDto: Dto['CreateUserMapper'],
|
|
104
88
|
em?: EntityManager
|
|
105
|
-
): Promise<Dto['
|
|
89
|
+
): Promise<Dto['UserMapper']> {
|
|
106
90
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
107
91
|
this.openTelemetryCollector.info('Creating user', userDto);
|
|
108
92
|
}
|
|
109
93
|
|
|
110
|
-
const user = await this
|
|
94
|
+
const user = await this._mappers.CreateUserMapper.deserializeDtoToEntity(
|
|
111
95
|
userDto,
|
|
112
96
|
em ?? this.em
|
|
113
97
|
);
|
|
@@ -118,20 +102,20 @@ export class BaseUserService<
|
|
|
118
102
|
await this.em.persistAndFlush(user);
|
|
119
103
|
}
|
|
120
104
|
|
|
121
|
-
return this
|
|
105
|
+
return this._mappers.UserMapper.serializeEntityToDto(user);
|
|
122
106
|
}
|
|
123
107
|
|
|
124
108
|
async createBatchUsers(
|
|
125
|
-
userDtos: Dto['
|
|
109
|
+
userDtos: Dto['CreateUserMapper'][],
|
|
126
110
|
em?: EntityManager
|
|
127
|
-
): Promise<Dto['
|
|
111
|
+
): Promise<Dto['UserMapper'][]> {
|
|
128
112
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
129
113
|
this.openTelemetryCollector.info('Creating batch users', userDtos);
|
|
130
114
|
}
|
|
131
115
|
|
|
132
116
|
const users = await Promise.all(
|
|
133
117
|
userDtos.map(async (createUserDto) =>
|
|
134
|
-
this
|
|
118
|
+
this._mappers.CreateUserMapper.deserializeDtoToEntity(
|
|
135
119
|
createUserDto,
|
|
136
120
|
em ?? this.em
|
|
137
121
|
)
|
|
@@ -145,16 +129,11 @@ export class BaseUserService<
|
|
|
145
129
|
}
|
|
146
130
|
|
|
147
131
|
return Promise.all(
|
|
148
|
-
users.map((user) =>
|
|
149
|
-
this.#mappers.UserDtoMapper.serializeEntityToDto(user)
|
|
150
|
-
)
|
|
132
|
+
users.map((user) => this._mappers.UserMapper.serializeEntityToDto(user))
|
|
151
133
|
);
|
|
152
134
|
}
|
|
153
135
|
|
|
154
|
-
async getUser(
|
|
155
|
-
idDto: IdDto,
|
|
156
|
-
em?: EntityManager
|
|
157
|
-
): Promise<Dto['UserDtoMapper']> {
|
|
136
|
+
async getUser(idDto: IdDto, em?: EntityManager): Promise<Dto['UserMapper']> {
|
|
158
137
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
159
138
|
this.openTelemetryCollector.info('Getting user', idDto);
|
|
160
139
|
}
|
|
@@ -163,15 +142,15 @@ export class BaseUserService<
|
|
|
163
142
|
populate: ['id', '*']
|
|
164
143
|
});
|
|
165
144
|
|
|
166
|
-
return this
|
|
167
|
-
user as Entities['
|
|
145
|
+
return this._mappers.UserMapper.serializeEntityToDto(
|
|
146
|
+
user as Entities['UserMapper']
|
|
168
147
|
);
|
|
169
148
|
}
|
|
170
149
|
|
|
171
150
|
async getBatchUsers(
|
|
172
151
|
idsDto: IdsDto,
|
|
173
152
|
em?: EntityManager
|
|
174
|
-
): Promise<Dto['
|
|
153
|
+
): Promise<Dto['UserMapper'][]> {
|
|
175
154
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
176
155
|
this.openTelemetryCollector.info('Getting batch users', idsDto);
|
|
177
156
|
}
|
|
@@ -182,22 +161,22 @@ export class BaseUserService<
|
|
|
182
161
|
populate: ['id', '*']
|
|
183
162
|
})
|
|
184
163
|
).map((user) =>
|
|
185
|
-
this
|
|
186
|
-
user as Entities['
|
|
164
|
+
this._mappers.UserMapper.serializeEntityToDto(
|
|
165
|
+
user as Entities['UserMapper']
|
|
187
166
|
)
|
|
188
167
|
)
|
|
189
168
|
);
|
|
190
169
|
}
|
|
191
170
|
|
|
192
171
|
async updateUser(
|
|
193
|
-
userDto: Dto['
|
|
172
|
+
userDto: Dto['UpdateUserMapper'],
|
|
194
173
|
em?: EntityManager
|
|
195
|
-
): Promise<Dto['
|
|
174
|
+
): Promise<Dto['UserMapper']> {
|
|
196
175
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
197
176
|
this.openTelemetryCollector.info('Updating user', userDto);
|
|
198
177
|
}
|
|
199
178
|
|
|
200
|
-
const user = await this
|
|
179
|
+
const user = await this._mappers.UpdateUserMapper.deserializeDtoToEntity(
|
|
201
180
|
userDto,
|
|
202
181
|
em ?? this.em
|
|
203
182
|
);
|
|
@@ -208,20 +187,20 @@ export class BaseUserService<
|
|
|
208
187
|
await this.em.persistAndFlush(user);
|
|
209
188
|
}
|
|
210
189
|
|
|
211
|
-
return this
|
|
190
|
+
return this._mappers.UserMapper.serializeEntityToDto(user);
|
|
212
191
|
}
|
|
213
192
|
|
|
214
193
|
async updateBatchUsers(
|
|
215
194
|
userDtos: UpdateUserDto[],
|
|
216
195
|
em?: EntityManager
|
|
217
|
-
): Promise<Dto['
|
|
196
|
+
): Promise<Dto['UserMapper'][]> {
|
|
218
197
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
219
198
|
this.openTelemetryCollector.info('Updating batch users', userDtos);
|
|
220
199
|
}
|
|
221
200
|
|
|
222
201
|
const users = await Promise.all(
|
|
223
202
|
userDtos.map(async (updateUserDto) =>
|
|
224
|
-
this
|
|
203
|
+
this._mappers.UpdateUserMapper.deserializeDtoToEntity(
|
|
225
204
|
updateUserDto,
|
|
226
205
|
em ?? this.em
|
|
227
206
|
)
|
|
@@ -235,9 +214,7 @@ export class BaseUserService<
|
|
|
235
214
|
}
|
|
236
215
|
|
|
237
216
|
return Promise.all(
|
|
238
|
-
users.map((user) =>
|
|
239
|
-
this.#mappers.UserDtoMapper.serializeEntityToDto(user)
|
|
240
|
-
)
|
|
217
|
+
users.map((user) => this._mappers.UserMapper.serializeEntityToDto(user))
|
|
241
218
|
);
|
|
242
219
|
}
|
|
243
220
|
|