Skip to content

Commit

Permalink
Merge pull request #760 from rocket-admin/backend_refactoring
Browse files Browse the repository at this point in the history
Backend refactoring
  • Loading branch information
Artuomka authored Jul 31, 2024
2 parents 093d5cf + f356c7e commit eef246f
Show file tree
Hide file tree
Showing 36 changed files with 134 additions and 391 deletions.
7 changes: 3 additions & 4 deletions backend/src/decorators/body-email.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';
import { ValidationHelper } from '../helpers/validators/validation-helper.js';

export const BodyEmail = createParamDecorator((data: any, ctx: ExecutionContext): string => {
Expand All @@ -13,7 +12,7 @@ export const BodyEmail = createParamDecorator((data: any, ctx: ExecutionContext)
if (ValidationHelper.isValidEmail(email)) {
return email;
}
throw buildBadRequestException(Messages.EMAIL_SYNTAX_INVALID);
throw new BadRequestException(Messages.EMAIL_SYNTAX_INVALID);
}
throw buildBadRequestException(Messages.USER_EMAIL_MISSING);
throw new BadRequestException(Messages.USER_EMAIL_MISSING);
});
7 changes: 3 additions & 4 deletions backend/src/decorators/body-uuid.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';
import { ValidationHelper } from '../helpers/validators/validation-helper.js';

export const BodyUuid = createParamDecorator((paramName: string, ctx: ExecutionContext): string => {
Expand All @@ -13,7 +12,7 @@ export const BodyUuid = createParamDecorator((paramName: string, ctx: ExecutionC
if (ValidationHelper.isValidUUID(uuId)) {
return uuId;
}
throw buildBadRequestException(Messages.UUID_INVALID);
throw new BadRequestException(Messages.UUID_INVALID);
}
throw buildBadRequestException(Messages.PARAMETER_NAME_MISSING(paramName));
throw new BadRequestException(Messages.PARAMETER_NAME_MISSING(paramName));
});
5 changes: 2 additions & 3 deletions backend/src/decorators/query-table-name.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';

export const QueryTableName = createParamDecorator((data: unknown, ctx: ExecutionContext): string => {
const request: IRequestWithCognitoInfo = ctx.switchToHttp().getRequest();
const query = request.query;
if (query.hasOwnProperty('tableName') && query['tableName'].length > 0) {
return query['tableName'];
}
throw buildBadRequestException(Messages.TABLE_NAME_MISSING);
throw new BadRequestException(Messages.TABLE_NAME_MISSING);
});
7 changes: 3 additions & 4 deletions backend/src/decorators/query-uuid.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';
import { ValidationHelper } from '../helpers/validators/validation-helper.js';

export const QueryUuid = createParamDecorator((paramName: string, ctx: ExecutionContext): string => {
Expand All @@ -13,7 +12,7 @@ export const QueryUuid = createParamDecorator((paramName: string, ctx: Execution
if (ValidationHelper.isValidUUID(uuId)) {
return uuId;
}
throw buildBadRequestException(Messages.UUID_INVALID);
throw new BadRequestException(Messages.UUID_INVALID);
}
throw buildBadRequestException(Messages.PARAMETER_NAME_MISSING(paramName));
throw new BadRequestException(Messages.PARAMETER_NAME_MISSING(paramName));
});
7 changes: 3 additions & 4 deletions backend/src/decorators/slug-uuid.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';
import { ValidationHelper } from '../helpers/validators/validation-helper.js';

export type SlugUuidParameter =
Expand Down Expand Up @@ -29,14 +28,14 @@ export const SlugUuid = createParamDecorator(
'companyId',
];
if (!availableSlagParameters.includes(parameterName)) {
throw buildBadRequestException(Messages.UUID_INVALID);
throw new BadRequestException(Messages.UUID_INVALID);
}
// eslint-disable-next-line security/detect-object-injection
const uuId: string = request.params?.[parameterName];
const validationResult = ValidationHelper.isValidUUID(uuId);
if (validationResult) {
return uuId;
}
throw buildBadRequestException(Messages.UUID_INVALID);
throw new BadRequestException(Messages.UUID_INVALID);
},
);
5 changes: 2 additions & 3 deletions backend/src/decorators/slug-verification.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';
import { ValidationHelper } from '../helpers/validators/validation-helper.js';

type SlugVerificationType = 'verificationString';
Expand All @@ -14,6 +13,6 @@ export const VerificationString = createParamDecorator(
if (isValidString) {
return verificationString;
}
throw buildBadRequestException(Messages.VERIFICATION_STRING_INCORRECT);
throw new BadRequestException(Messages.VERIFICATION_STRING_INCORRECT);
},
);
Empty file.
7 changes: 3 additions & 4 deletions backend/src/decorators/user-id.decorator.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { BadRequestException, createParamDecorator, ExecutionContext } from '@nestjs/common';
import { IRequestWithCognitoInfo } from '../authorization/index.js';
import { Messages } from '../exceptions/text/messages.js';
import { buildBadRequestException } from '../guards/utils/index.js';
import { ValidationHelper } from '../helpers/validators/validation-helper.js';

export const UserId = createParamDecorator((data: any, ctx: ExecutionContext): string => {
const request: IRequestWithCognitoInfo = ctx.switchToHttp().getRequest();
const userId = request.decoded?.sub;
if (!userId) {
throw buildBadRequestException(Messages.USER_ID_MISSING);
throw new BadRequestException(Messages.USER_ID_MISSING);
}
if (ValidationHelper.isValidUUID(userId)) {
return userId;
}
throw buildBadRequestException(Messages.UUID_INVALID);
throw new BadRequestException(Messages.UUID_INVALID);
});
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ApiProperty } from '@nestjs/swagger';
import { GroupEntity } from '../../group.entity.js';
import { FoundGroupResponseDto } from '../../dto/found-group-response.dto.js';

export class AddedUserInGroupDs {
@ApiProperty()
group: Omit<GroupEntity, 'connection'>;
group: FoundGroupResponseDto;

@ApiProperty()
message: string;
Expand Down
4 changes: 2 additions & 2 deletions backend/src/entities/group/group.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ import { FoundGroupDataInfoDs, FoundUserGroupsDs } from './application/data-sctr
import { RemoveUserFromGroupResultDs } from './application/data-sctructures/remove-user-from-group-result.ds.js';
import { VerifyAddUserInGroupDs } from './application/data-sctructures/verify-add-user-in-group.ds.js';
import {
IAddUserInGroup,
IDeleteGroup,
IFindAllUsersInGroup,
IFindUserGroups,
IRemoveUserFromGroup,
ISaaSAddUserInGroup,
IUpdateGroupTitle,
IVerifyAddUserInGroup,
} from './use-cases/use-cases.interfaces.js';
Expand All @@ -56,7 +56,7 @@ import { UpdateGroupTitleDto } from './dto/update-group-title.dto.js';
export class GroupController {
constructor(
@Inject(UseCaseType.INVITE_USER_IN_GROUP)
private readonly addUserInGroupUseCase: ISaaSAddUserInGroup,
private readonly addUserInGroupUseCase: IAddUserInGroup,
@Inject(UseCaseType.VERIFY_INVITE_USER_IN_GROUP)
private readonly verifyAddUserInGroupUseCase: IVerifyAddUserInGroup,
@Inject(UseCaseType.FIND_ALL_USER_GROUPS)
Expand Down
4 changes: 2 additions & 2 deletions backend/src/entities/group/group.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { FindAllUserGroupsUseCase } from './use-cases/find-all-user-groups.use.c
import { FindAllUsersInGroupUseCase } from './use-cases/find-all-users-in-group.use.case.js';
import { RemoveUserFromGroupUseCase } from './use-cases/remove-user-from-group.use.case.js';
import { VerifyAddUserInGroupUseCase } from './use-cases/verify-add-user-in-group.use.case.js';
import { SaaSAddUserInGroupV2UseCase } from './use-cases/saas-add-user-in-group-v2.use.case.js';
import { AddUserInGroupUseCase } from './use-cases/saas-add-user-in-group-v2.use.case.js';
import { UpdateGroupTitleUseCase } from './use-cases/update-group-title.use.case.js';

@Module({
Expand All @@ -40,7 +40,7 @@ import { UpdateGroupTitleUseCase } from './use-cases/update-group-title.use.case
},
{
provide: UseCaseType.INVITE_USER_IN_GROUP,
useClass: SaaSAddUserInGroupV2UseCase,
useClass: AddUserInGroupUseCase,
},
{
provide: UseCaseType.VERIFY_INVITE_USER_IN_GROUP,
Expand Down
182 changes: 0 additions & 182 deletions backend/src/entities/group/use-cases/add-user-in-group.use.case.ts

This file was deleted.

4 changes: 2 additions & 2 deletions backend/src/entities/group/use-cases/delete-group.use.case.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common';
import { HttpException, HttpStatus, Inject, Injectable, Scope } from '@nestjs/common';
import AbstractUseCase from '../../../common/abstract-use.case.js';
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.interface.js';
import { BaseType } from '../../../common/data-injection.tokens.js';
import { Messages } from '../../../exceptions/text/messages.js';
import { DeletedGroupResultDs } from '../application/data-sctructures/deleted-group-result.ds.js';
import { IDeleteGroup } from './use-cases.interfaces.js';

@Injectable()
@Injectable({ scope: Scope.REQUEST })
export class DeleteGroupUseCase extends AbstractUseCase<string, DeletedGroupResultDs> implements IDeleteGroup {
constructor(
@Inject(BaseType.GLOBAL_DB_CONTEXT)
Expand Down
Loading

0 comments on commit eef246f

Please sign in to comment.