Skip to content

Commit

Permalink
Merge pull request #173 from mapeveri/feat/172
Browse files Browse the repository at this point in the history
Create account bounded context #172
  • Loading branch information
mapeveri authored Dec 20, 2024
2 parents 3302c57 + 85cfab5 commit 52d956c
Show file tree
Hide file tree
Showing 103 changed files with 494 additions and 213 deletions.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ RABBITMQ_DEFAULT_USER=app
RABBITMQ_DEFAULT_PASS=rabbit_app
RABBITMQ_EVENTS_QUEUE='events_queue'
RABBITMQ_HOST="amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq:5672"
SERVER_URL=http://localhost:4000
1 change: 1 addition & 0 deletions .env.test
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ RABBITMQ_DEFAULT_USER=app
RABBITMQ_DEFAULT_PASS=rabbit_app
RABBITMQ_EVENTS_QUEUE='events_queue'
RABBITMQ_HOST="amqp://app:rabbit_app@localhost:5672"
SERVER_URL=http://localhost:4000
33 changes: 26 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
"@mikro-orm/migrations": "^6.3.8",
"@mikro-orm/nestjs": "^6.0.2",
"@mikro-orm/postgresql": "^6.3.8",
"@nestjs/axios": "^3.1.3",
"@nestjs/common": "^10.3.10",
"@nestjs/config": "^3.2.3",
"@nestjs/core": "^10.4.4",
Expand All @@ -72,7 +73,7 @@
"@nestjs/swagger": "^7.4.2",
"amqp-connection-manager": "^4.1.14",
"amqplib": "^0.10.3",
"axios": "^1.7.4",
"axios": "^1.7.9",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.0",
"dotenv": "^16.4.5",
Expand All @@ -92,8 +93,8 @@
"mikro-orm": {
"useTsNode": true,
"configPaths": [
"./src/languages/infrastructure/persistence/mikroOrm/config.ts",
"./dist/languages/infrastructure/persistence/mikroOrm/config.ts"
"./src/mikroOrmConfig.ts",
"./dist/mikroOrmConfig.ts"
]
}
}
4 changes: 4 additions & 0 deletions src/account/_dependencyInjection/commandHandlers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import UpdateUserCommandHandler from '@src/account/application/user/command/updateUserCommandHandler';
import SignupUserCommandHandler from '@src/account/application/auth/command/signupUserCommandHandler';

export const commands = [SignupUserCommandHandler, UpdateUserCommandHandler];
15 changes: 15 additions & 0 deletions src/account/_dependencyInjection/controllers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import RefreshTokenPostController from '@src/account/app/controllers/v1/auth/refreshTokenPostController';
import UserPutController from '@src/account/app/controllers/v1/user/userPutController';
import SignupPostController from '@src/account/app/controllers/v1/auth/signupPostController';
import LoginPostController from '@src/account/app/controllers/v1/auth/loginPostController';
import MeGetController from '@src/account/app/controllers/v1/auth/meGetController';
import UserGetController from '@src/account/app/controllers/v1/user/userGetController';

export const controllers = [
LoginPostController,
SignupPostController,
RefreshTokenPostController,
MeGetController,
UserGetController,
UserPutController,
];
3 changes: 3 additions & 0 deletions src/account/_dependencyInjection/entitySchemas.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { UserSchema } from '@src/account/infrastructure/persistence/mikroOrm/entities/user';

export const entitySchemas = [UserSchema];
4 changes: 4 additions & 0 deletions src/account/_dependencyInjection/queryHandlers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import FindUserQueryHandler from '@src/account/application/user/query/findUserQueryHandler';
import GetUserSocialLoginQueryHandler from '@src/account/application/auth/query/getUserSocialLoginQueryHandler';

export const queries = [GetUserSocialLoginQueryHandler, FindUserQueryHandler];
10 changes: 10 additions & 0 deletions src/account/_dependencyInjection/repositories.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { USER_REPOSITORY } from '@src/account/domain/user/userRepository';

import MikroOrmUserRepository from '@src/account/infrastructure/persistence/mikroOrm/repositories/mikroOrmUserRepository';

export const repositories = [
{
provide: USER_REPOSITORY,
useClass: MikroOrmUserRepository,
},
];
16 changes: 16 additions & 0 deletions src/account/account.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Module } from '@nestjs/common';

import { controllers } from '@src/account/_dependencyInjection/controllers';
import { commands } from '@src/account/_dependencyInjection/commandHandlers';
import { queries } from '@src/account/_dependencyInjection/queryHandlers';
import { repositories } from '@src/account/_dependencyInjection/repositories';
import { MikroOrmModule } from '@mikro-orm/nestjs';
import { entitySchemas as accountEntitySchemas } from '@src/account/_dependencyInjection/entitySchemas';

@Module({
imports: [MikroOrmModule.forFeature([...accountEntitySchemas])],
exports: [],
controllers: [...controllers],
providers: [...commands, ...queries, ...repositories],
})
export class AccountModule {}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import GetUserSocialLoginQuery from '@src/languages/application/auth/query/getUserSocialLoginQuery';
import GetUserSocialLoginQuery from '@src/account/application/auth/query/getUserSocialLoginQuery';
import { Uuid } from '@src/shared/domain/valueObjects/uuid';
import { Body, Controller, HttpCode, Inject, Post } from '@nestjs/common';
import LoginPostDto from './loginPostDto';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
ApiUnauthorizedResponse,
} from '@nestjs/swagger';
import { QUERY_BUS, QueryBus } from '@src/shared/domain/bus/queryBus/queryBus';
import FindUserQuery from '@src/languages/application/user/query/findUserQuery';
import FindUserQuery from '@src/account/application/user/query/findUserQuery';

@ApiTags('Auth')
@Controller()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
import RefreshTokenPostDto from './refreshTokenPostDto';
import RefreshTokenPostResponseDto from './refreshTokenPostResponseDto';
import { QUERY_BUS, QueryBus } from '@src/shared/domain/bus/queryBus/queryBus';
import FindUserQuery from '@src/languages/application/user/query/findUserQuery';
import FindUserQuery from '@src/account/application/user/query/findUserQuery';

@ApiTags('Auth')
@Controller()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Body, Controller, HttpCode, Inject, Post } from '@nestjs/common';
import { ApiBadRequestResponse, ApiInternalServerErrorResponse, ApiTags } from '@nestjs/swagger';
import SignupPostDto from '@src/languages/app/controllers/v1/auth/signupPostDto';
import SignupPostDto from '@src/account/app/controllers/v1/auth/signupPostDto';
import { COMMAND_BUS, CommandBus } from '@src/shared/domain/bus/commandBus/commandBus';
import SignupUserCommand from '@src/languages/application/auth/command/signupUserCommand';
import SignupUserCommand from '@src/account/application/auth/command/signupUserCommand';
import { Uuid } from '@src/shared/domain/valueObjects/uuid';

@ApiTags('Auth')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import {
import { Controller, Get, HttpCode, Inject, Param, UseGuards } from '@nestjs/common';
import { NestJwtAuthGuard } from '@src/shared/guards/nestJwtAuthGuard';
import { QUERY_BUS, QueryBus } from '@src/shared/domain/bus/queryBus/queryBus';
import FindUserQuery from '@src/languages/application/user/query/findUserQuery';
import UserGetResponse from '@src/languages/app/controllers/v1/user/userGetResponse';
import FindUserQuery from '@src/account/application/user/query/findUserQuery';
import UserGetResponse from '@src/account/app/controllers/v1/user/userGetResponse';

@ApiTags('Users')
@Controller()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
import { Request } from 'express';
import { COMMAND_BUS, CommandBus } from '@src/shared/domain/bus/commandBus/commandBus';
import { NestJwtAuthGuard } from '@src/shared/guards/nestJwtAuthGuard';
import UserPutDto from '@src/languages/app/controllers/v1/user/userPutDto';
import UpdateUserCommand from '@src/languages/application/user/command/updateUserCommand';
import UserPutDto from '@src/account/app/controllers/v1/user/userPutDto';
import UpdateUserCommand from '@src/account/application/user/command/updateUserCommand';

@ApiTags('Users')
@Controller()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { CommandHandler, ICommandHandler } from '@src/shared/domain/bus/commandBus/commandHandler';
import SignupUserCommand from '@src/languages/application/auth/command/signupUserCommand';
import SignupUserCommand from '@src/account/application/auth/command/signupUserCommand';
import { Inject } from '@src/shared/domain/injector/inject.decorator';
import UserRepository, { USER_REPOSITORY } from '@src/languages/domain/user/userRepository';
import UserRepository, { USER_REPOSITORY } from '@src/account/domain/user/userRepository';
import { EVENT_BUS, EventBus } from '@src/shared/domain/bus/eventBus/eventBus';
import UserId from '@src/languages/domain/user/userId';
import UserAlreadyExistsException from '@src/languages/domain/user/userAlreadyExistsException';
import User from '@src/languages/domain/user/user';
import UserId from '@src/account/domain/user/userId';
import UserAlreadyExistsException from '@src/account/domain/user/userAlreadyExistsException';
import User from '@src/account/domain/user/user';
import Email from '@src/shared/domain/valueObjects/email';

@CommandHandler(SignupUserCommand)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
} from '@src/shared/domain/auth/socialAuthenticationVerifier';
import { IQueryHandler, QueryHandler } from '@src/shared/domain/bus/queryBus/queryHandler';
import { USER_AUTHENTICATOR, UserAuthenticator } from '@src/shared/domain/auth/userAuthenticator';
import GetUserSocialLoginQueryResponse from '@src/languages/application/auth/query/getUserSocialLoginQueryResponse';
import GetUserSocialLoginQueryResponse from '@src/account/application/auth/query/getUserSocialLoginQueryResponse';

@QueryHandler(GetUserSocialLoginQuery)
export default class GetUserSocialLoginQueryHandler implements IQueryHandler<GetUserSocialLoginQuery> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import UserRepository, { USER_REPOSITORY } from '@src/languages/domain/user/userRepository';
import UserRepository, { USER_REPOSITORY } from '@src/account/domain/user/userRepository';
import UpdateUserCommand from './updateUserCommand';
import UserId from '@src/languages/domain/user/userId';
import UserId from '@src/account/domain/user/userId';
import { Inject } from '@src/shared/domain/injector/inject.decorator';
import { CommandHandler, ICommandHandler } from '@src/shared/domain/bus/commandBus/commandHandler';
import { EVENT_BUS, EventBus } from '@src/shared/domain/bus/eventBus/eventBus';
import User from '@src/languages/domain/user/user';
import UserDoesNotExistsException from '@src/languages/domain/user/userDoesNotExistsException';
import User from '@src/account/domain/user/user';
import UserDoesNotExistsException from '@src/account/domain/user/userDoesNotExistsException';

@CommandHandler(UpdateUserCommand)
export default class UpdateUserCommandHandler implements ICommandHandler<UpdateUserCommand> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import UserRepository, { USER_REPOSITORY } from '@src/languages/domain/user/userRepository';
import UserRepository, { USER_REPOSITORY } from '@src/account/domain/user/userRepository';
import FindUserQuery from './findUserQuery';
import QueryResponse from '@src/shared/domain/bus/queryBus/queryResponse';
import UserId from '@src/languages/domain/user/userId';
import UserId from '@src/account/domain/user/userId';
import FindUserResponse from './findUserResponse';
import { Inject } from '@src/shared/domain/injector/inject.decorator';
import { IQueryHandler, QueryHandler } from '@src/shared/domain/bus/queryBus/queryHandler';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import User, { UserPrimitives } from '@src/languages/domain/user/user';
import User, { UserPrimitives } from '@src/account/domain/user/user';
import QueryResponse from '@src/shared/domain/bus/queryBus/queryResponse';

export default class FindUserResponse extends QueryResponse {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { AggregateRoot } from '@src/shared/domain/aggregate/aggregateRoot';
import UserId from './userId';
import Email from '@src/shared/domain/valueObjects/email';
import UserUpdatedEvent from '@src/languages/domain/user/userUpdatedEvent';
import UserCreatedEvent from '@src/languages/domain/user/userCreatedEvent';
import UserUpdatedEvent from '@src/account/domain/user/userUpdatedEvent';
import UserCreatedEvent from '@src/account/domain/user/userCreatedEvent';

export type UserPrimitives = {
id: string;
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { EntitySchema } from '@mikro-orm/core';
import User from '@src/languages/domain/user/user';
import { UserIdType } from '../../mikroOrm/types/userIdType';
import { EmailType } from '../../../../../shared/infrastructure/persistence/mikroOrm/types/emailType';
import User from '@src/account/domain/user/user';
import { UserIdType } from '@src/account/infrastructure/persistence/mikroOrm/types/userIdType';
import { EmailType } from '@src/shared/infrastructure/persistence/mikroOrm/types/emailType';

export const UserSchema = new EntitySchema<User>({
class: User,
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import UserRepository from '@src/languages/domain/user/userRepository';
import User from '@src/languages/domain/user/user';
import UserId from '@src/languages/domain/user/userId';
import UserRepository from '@src/account/domain/user/userRepository';
import User from '@src/account/domain/user/user';
import UserId from '@src/account/domain/user/userId';
import { Injectable } from '@nestjs/common';
import Email from '@src/shared/domain/valueObjects/email';
import { EntityManager, EntityRepository } from '@mikro-orm/core';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import UserId from '@src/languages/domain/user/userId';
import UserId from '@src/account/domain/user/userId';
import { ValueObjectType } from '@src/shared/infrastructure/persistence/mikroOrm/types/valueObjectType';

export class UserIdType extends ValueObjectType<string> {
Expand Down
5 changes: 4 additions & 1 deletion src/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import { Module } from '@nestjs/common';
import { LanguageModule } from './languages/language.module';
import { SharedModule } from './shared/shared.module';
import { AccountModule } from '@src/account/account.module';
import { MikroOrmModule } from '@mikro-orm/nestjs';
import mikroOrmConfiguration from '@src/mikroOrmConfig';

@Module({
imports: [SharedModule, LanguageModule],
imports: [SharedModule, MikroOrmModule.forRoot(mikroOrmConfiguration), AccountModule, LanguageModule],
})
export class AppModule {}
4 changes: 0 additions & 4 deletions src/languages/_dependencyInjection/commandHandlers.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
import CreateCountryCommandHandler from '@src/languages/application/country/command/createCountryCommandHandler';
import CreateExpressionCommandHandler from '@src/languages/application/term/command/expression/createExpressionCommandHandler';
import DeleteTermCommandHandler from '@src/languages/application/term/command/deleteTermCommandHandler';
import UpdateUserCommandHandler from '@src/languages/application/user/command/updateUserCommandHandler';
import CreateWordCommandHandler from '@src/languages/application/term/command/word/createWordCommandHandler';
import AddLikeTermCommandHandler from '@src/languages/application/term/command/addLikeTermCommandHandler';
import DislikeTermCommandHandler from '@src/languages/application/term/command/dislikeTermCommandHandler';
import UpdateWordCommandHandler from '@src/languages/application/term/command/word/updateWordCommandHandler';
import SignupUserCommandHandler from '@src/languages/application/auth/command/signupUserCommandHandler';

export const commands = [
SignupUserCommandHandler,
CreateCountryCommandHandler,
CreateExpressionCommandHandler,
UpdateUserCommandHandler,
CreateWordCommandHandler,
UpdateWordCommandHandler,
DeleteTermCommandHandler,
Expand Down
12 changes: 0 additions & 12 deletions src/languages/_dependencyInjection/controllers.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,18 @@
import LoginPostController from '@src/languages/app/controllers/v1/auth/loginPostController';
import RefreshTokenPostController from '@src/languages/app/controllers/v1/auth/refreshTokenPostController';
import MeGetController from '@src/languages/app/controllers/v1/auth/meGetController';
import SearchTermsGetController from '@src/languages/app/controllers/v1/terms/searchTermsGetController';
import FindSuggestionsTermGetController from '@src/languages/app/controllers/v1/terms/findSuggestionsTermGetController';
import WordPostController from '@src/languages/app/controllers/v1/terms/words/wordPostController';
import ExpressionPostController from '@src/languages/app/controllers/v1/terms/expressions/expressionPostController';
import CountriesGetController from '@src/languages/app/controllers/v1/countries/countriesGetController';
import CountryGetController from '@src/languages/app/controllers/v1/countries/countryGetController';
import CountryPostController from '@src/languages/app/controllers/v1/countries/countryPostController';
import UserPutController from '@src/languages/app/controllers/v1/user/userPutController';
import { SearchTermsSseController } from '@src/languages/app/controllers/v1/terms/searchTermsSseController';
import { HealthController } from '@src/languages/app/controllers/v1/health/healthGetController';
import LikeTermPostController from '@src/languages/app/controllers/v1/terms/likeTermPostController';
import DislikeTermPostController from '@src/languages/app/controllers/v1/terms/dislikeTermPostController';
import WordPutController from '@src/languages/app/controllers/v1/terms/words/wordPutController';
import TermGetController from '@src/languages/app/controllers/v1/terms/termGetController';
import SignupPostController from '@src/languages/app/controllers/v1/auth/signupPostController';
import UserGetController from '@src/languages/app/controllers/v1/user/userGetController';

export const controllers = [
LoginPostController,
SignupPostController,
RefreshTokenPostController,
MeGetController,
SearchTermsGetController,
FindSuggestionsTermGetController,
TermGetController,
Expand All @@ -31,8 +21,6 @@ export const controllers = [
CountriesGetController,
CountryGetController,
CountryPostController,
UserGetController,
UserPutController,
SearchTermsSseController,
HealthController,
LikeTermPostController,
Expand Down
Loading

0 comments on commit 52d956c

Please sign in to comment.