Skip to content

Commit b0951ea

Browse files
committed
refactor(backend): directly inject sub-services and remove facades
Updated FileController, ActionsController, ProjectController, and AccessController to directly inject and call the specialized sub-services (FileQueryService, FileStorageService, FileLifecycleService, AccessQueryService, AccessModificationService) rather than delegating through the monolithic FileService and AccessService. Deleted FileService and AccessService facade classes.
1 parent c6c8d5a commit b0951ea

9 files changed

Lines changed: 95 additions & 441 deletions

File tree

backend/src/endpoints/access/access.controller.ts

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
ApiResponse,
55
OutputDto,
66
} from '@/decorators';
7-
import { AccessService } from '@/services/access.service';
7+
import { AccessModificationService } from '@/services/access-modification.service';
8+
import { AccessQueryService } from '@/services/access-query.service';
89
import {
910
AccessGroupAuditLogsDto,
1011
AccessGroupDto,
@@ -45,7 +46,10 @@ import {
4546

4647
@Controller('access-groups')
4748
export class AccessController {
48-
constructor(private readonly accessService: AccessService) {}
49+
constructor(
50+
private readonly accessQueryService: AccessQueryService,
51+
private readonly accessModificationService: AccessModificationService,
52+
) {}
4953

5054
@ApiOperation({
5155
summary: 'Get filtered AccessGroups',
@@ -62,7 +66,7 @@ export class AccessController {
6266
async search(
6367
@Query() query: GetFilteredAccessGroupsDto,
6468
): Promise<AccessGroupsDto> {
65-
return this.accessService.searchAccessGroup(
69+
return this.accessQueryService.searchAccessGroup(
6670
query.search,
6771
query.type,
6872
query.skip,
@@ -90,7 +94,7 @@ export class AccessController {
9094
@ParameterUID('uuid', 'AccessGroup UUID') uuid: string,
9195
@AddUser() user: AuthHeader,
9296
): Promise<AccessGroupDto> {
93-
return await this.accessService
97+
return await this.accessQueryService
9498
.getAccessGroup(uuid, user.user.uuid)
9599
.catch((error: unknown) => {
96100
if (error instanceof EntityNotFoundError) {
@@ -114,7 +118,7 @@ export class AccessController {
114118
async getAuditLogs(
115119
@ParameterUID('uuid', 'AccessGroup UUID') uuid: string,
116120
): Promise<AccessGroupAuditLogsDto> {
117-
return this.accessService.getAuditLogs(uuid);
121+
return this.accessQueryService.getAuditLogs(uuid);
118122
}
119123

120124
@Post()
@@ -132,11 +136,12 @@ export class AccessController {
132136
@Body() body: CreateAccessGroupDto,
133137
@AddUser() user: AuthHeader,
134138
): Promise<AccessGroupDto> {
135-
const accessGroup = await this.accessService.createAccessGroup(
136-
body.name,
137-
user,
138-
);
139-
return this.accessService.getAccessGroup(
139+
const accessGroup =
140+
await this.accessModificationService.createAccessGroup(
141+
body.name,
142+
user,
143+
);
144+
return this.accessQueryService.getAccessGroup(
140145
accessGroup.uuid,
141146
user.user.uuid,
142147
);
@@ -161,7 +166,7 @@ export class AccessController {
161166
@Body() body: AddUserToAccessGroupDto,
162167
@AddUser() requestUser: AuthHeader,
163168
): Promise<AccessGroupDto> {
164-
await this.accessService
169+
await this.accessModificationService
165170
.addUserToAccessGroup(
166171
uuid,
167172
body.userUuid,
@@ -175,7 +180,10 @@ export class AccessController {
175180
}
176181
throw error;
177182
});
178-
return this.accessService.getAccessGroup(uuid, requestUser.user.uuid);
183+
return this.accessQueryService.getAccessGroup(
184+
uuid,
185+
requestUser.user.uuid,
186+
);
179187
}
180188

181189
@ApiOperation({
@@ -194,12 +202,15 @@ export class AccessController {
194202
@ParameterUID('userUuid', 'UUID of User to remove') userUuid: string,
195203
@AddUser() requestUser: AuthHeader,
196204
): Promise<AccessGroupDto> {
197-
await this.accessService.removeUsersFromAccessGroup(
205+
await this.accessModificationService.removeUsersFromAccessGroup(
198206
uuid,
199207
[userUuid],
200208
requestUser,
201209
);
202-
return this.accessService.getAccessGroup(uuid, requestUser.user.uuid);
210+
return this.accessQueryService.getAccessGroup(
211+
uuid,
212+
requestUser.user.uuid,
213+
);
203214
}
204215

205216
@ApiOperation({
@@ -218,12 +229,15 @@ export class AccessController {
218229
@Body() body: RemoveUsersFromAccessGroupDto,
219230
@AddUser() requestUser: AuthHeader,
220231
): Promise<AccessGroupDto> {
221-
await this.accessService.removeUsersFromAccessGroup(
232+
await this.accessModificationService.removeUsersFromAccessGroup(
222233
uuid,
223234
body.userUuids,
224235
requestUser,
225236
);
226-
return this.accessService.getAccessGroup(uuid, requestUser.user.uuid);
237+
return this.accessQueryService.getAccessGroup(
238+
uuid,
239+
requestUser.user.uuid,
240+
);
227241
}
228242

229243
@ApiOperation({
@@ -242,7 +256,7 @@ export class AccessController {
242256
@Body() body: AddAccessGroupToProjectDto,
243257
@AddUser() user: AuthHeader,
244258
): Promise<ProjectDto> {
245-
return this.accessService.addAccessGroupToProject(
259+
return this.accessModificationService.addAccessGroupToProject(
246260
projectUuid,
247261
uuid,
248262
body.rights,
@@ -263,7 +277,7 @@ export class AccessController {
263277
@ParameterUID('projectUuid', 'UUID of Project') projectUuid: string,
264278
@AddUser() user: AuthHeader,
265279
): Promise<RemoveAccessGroupFromProjectResponseDto> {
266-
await this.accessService.removeAccessGroupFromProject(
280+
await this.accessModificationService.removeAccessGroupFromProject(
267281
projectUuid,
268282
uuid,
269283
user,
@@ -282,7 +296,7 @@ export class AccessController {
282296
async deleteAccessGroup(
283297
@ParameterUID('uuid', 'UUID of AccessGroup to be deleted') uuid: string,
284298
): Promise<DeleteAccessGroupResponseDto> {
285-
await this.accessService.deleteAccessGroup(uuid);
299+
await this.accessModificationService.deleteAccessGroup(uuid);
286300
return { success: true };
287301
}
288302

@@ -303,7 +317,7 @@ export class AccessController {
303317
@Body() body: SetAccessGroupUserExpirationDto,
304318
@AddUser() requestUser: AuthHeader,
305319
): Promise<GroupMembershipDto> {
306-
return this.accessService.setExpireDate(
320+
return this.accessModificationService.setExpireDate(
307321
uuid,
308322
userUuid,
309323
body.expireDate,
@@ -327,7 +341,7 @@ export class AccessController {
327341
@Body() body: SetAccessGroupUserPermissionsDto,
328342
@AddUser() requestUser: AuthHeader,
329343
): Promise<GroupMembershipDto> {
330-
return this.accessService.setCanEditGroup(
344+
return this.accessModificationService.setCanEditGroup(
331345
uuid,
332346
userUuid,
333347
body.canEditGroup,

backend/src/endpoints/access/access.module.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { AccessModificationService } from '@/services/access-modification.service';
22
import { AccessQueryService } from '@/services/access-query.service';
3-
import { AccessService } from '@/services/access.service';
43
import {
54
AccessGroupAuditService,
65
AccessGroupEntity,
@@ -28,13 +27,16 @@ import { AccessController } from './access.controller';
2827
UserModule,
2928
],
3029
providers: [
31-
AccessService,
3230
AccessQueryService,
3331
AccessModificationService,
3432
AccessGroupAuditService,
3533
],
3634
controllers: [AccessController],
37-
exports: [AccessService],
35+
exports: [
36+
AccessQueryService,
37+
AccessModificationService,
38+
AccessGroupAuditService,
39+
],
3840
})
3941
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
4042
export class AccessModule {}

backend/src/endpoints/action/action.controller.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ApiCreatedResponse, ApiOkResponse, OutputDto } from '@/decorators';
22
import { ActionService } from '@/services/action.service';
3-
import { FileService } from '@/services/file.service';
3+
import { FileQueryService } from '@/services/file-query.service';
44
import { ParameterUuid } from '@/validation/parameter-decorators';
55
import {
66
ActionDto,
@@ -30,7 +30,7 @@ import {
3030
export class ActionsController {
3131
constructor(
3232
private readonly actionService: ActionService,
33-
private readonly fileService: FileService,
33+
private readonly fileQueryService: FileQueryService,
3434
) {}
3535

3636
@Post()
@@ -92,7 +92,7 @@ export class ActionsController {
9292
async getFileEvents(
9393
@ParameterUuid('uuid') uuid: string,
9494
): Promise<FileEventsDto> {
95-
return this.fileService.getActionFileEvents(uuid);
95+
return this.fileQueryService.getActionFileEvents(uuid);
9696
}
9797

9898
@Delete(':uuid')

0 commit comments

Comments
 (0)