Skip to content

Commit

Permalink
Merge pull request #102 from mapeveri/chore/refactor-modules
Browse files Browse the repository at this point in the history
chore: Refactor modules
  • Loading branch information
mapeveri authored Mar 4, 2024
2 parents 84fafe9 + 4ffd6b2 commit c3adc78
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 31 deletions.
10 changes: 1 addition & 9 deletions src/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,8 @@
import { Module } from '@nestjs/common';
import { LanguageModule } from './languages/language.module';
import { SharedModule } from './shared/shared.module';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { dataSourceConfig } from './shared/infrastructure/persistence/typeOrm/dataSource';

@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRoot(dataSourceConfig),
SharedModule,
LanguageModule,
],
imports: [SharedModule, LanguageModule],
})
export class AppModule {}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ import UserRepository, { USER_REPOSITORY } from '@src/languages/domain/user/user
import { Inject } from '@src/shared/domain/injector/inject.decorator';
import UserFinder from '@src/languages/domain/user/userFinder';
import { Document } from 'mongodb';
import MongoConnection from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import MongoConnection, { MONGO_CLIENT } from '@src/shared/infrastructure/persistence/mongo/mongoConnection';

export default class MongoFindSuggestionsTermReadLayer implements FindSuggestionsTermReadLayer {
private readonly userFinder: UserFinder;

constructor(
@Inject('MONGO_CLIENT') private readonly mongo: MongoConnection,
@Inject(MONGO_CLIENT) private readonly mongo: MongoConnection,
@Inject(USER_REPOSITORY) userRepository: UserRepository,
) {
this.userFinder = new UserFinder(userRepository);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import SearchTermViewReadLayer, {
import { Document } from 'mongodb';
import { SortDirection } from 'typeorm';
import { Inject } from '@src/shared/domain/injector/inject.decorator';
import MongoConnection from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import MongoConnection, { MONGO_CLIENT } from '@src/shared/infrastructure/persistence/mongo/mongoConnection';

@Injectable()
export default class MongoSearchTermViewReadLayer implements SearchTermViewReadLayer {
constructor(@Inject('MONGO_CLIENT') private readonly mongo: MongoConnection) {}
constructor(@Inject(MONGO_CLIENT) private readonly mongo: MongoConnection) {}

async search(criteria: TermCriteriaParams): Promise<TermView[]> {
let result = [];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Injectable } from '@nestjs/common';
import TermViewSaver from '@src/languages/application/term/projection/create/termViewSaver';
import { Inject } from '@src/shared/domain/injector/inject.decorator';
import MongoConnection from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import MongoConnection, { MONGO_CLIENT } from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import { TermView } from '@src/languages/application/term/viewModel/termView';

@Injectable()
export default class MongoTermViewSaver implements TermViewSaver {
constructor(@Inject('MONGO_CLIENT') private readonly mongo: MongoConnection) {}
constructor(@Inject(MONGO_CLIENT) private readonly mongo: MongoConnection) {}

async save(termView: TermView): Promise<void> {
const session = this.mongo.session;
Expand Down
14 changes: 2 additions & 12 deletions src/languages/language.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module, OnApplicationBootstrap } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { controllers } from '@src/languages/_dependencyInjection/controllers';
import { services } from '@src/shared/_dependencyInjection/services';
import { repositories } from '@src/languages/_dependencyInjection/repositories';
import { commands } from '@src/languages/_dependencyInjection/commandHandlers';
import { queries } from '@src/languages/_dependencyInjection/queryHandlers';
Expand All @@ -9,23 +9,13 @@ import { projections } from '@src/languages/_dependencyInjection/projectionHandl
import { readLayers } from '@src/languages/_dependencyInjection/readLayers';
import { services as LanguageServices } from '@src/languages/_dependencyInjection/services';
import NestProjectionBus from '@src/shared/infrastructure/bus/nestProjectionBus';
import { TypeOrmModule } from '@nestjs/typeorm';
import { entitySchemas } from '@src/shared/_dependencyInjection/entitySchemas';

@Module({
imports: [TypeOrmModule.forFeature(entitySchemas)],
exports: [TypeOrmModule],
controllers: [...controllers],
providers: [
...services,
...commands,
...queries,
...events,
...projections,
...repositories,
...readLayers,
...LanguageServices,
],
providers: [...commands, ...queries, ...events, ...projections, ...repositories, ...readLayers, ...LanguageServices],
})
export class LanguageModule implements OnApplicationBootstrap {
constructor(private readonly projectionBus: NestProjectionBus) {}
Expand Down
4 changes: 2 additions & 2 deletions src/shared/_dependencyInjection/services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import NestProjectionBus from '@src/shared/infrastructure/bus/nestProjectionBus'
import { EVENT_STORE_REPOSITORY } from '@src/shared/domain/eventStore/eventStoreRepository';
import MongoEventStoreRepository from '@src/shared/infrastructure/persistence/mongo/repositories/mongoEventStoreRepository';
import { PersistDomainEventsSubscriber } from '@src/shared/infrastructure/subscribers/persistDomainEventsSubscriber';
import MongoConnection from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import MongoConnection, { MONGO_CLIENT } from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import { TypeOrmTransactionalEntityManager } from '@src/shared/infrastructure/persistence/typeOrm/typeOrmTransactionalEntityManager';
import TypeOrmTransactionalDecorator from '@src/shared/infrastructure/persistence/typeOrm/typeOrmTransactionalDecorator';

Expand All @@ -29,7 +29,7 @@ export const services = [
TypeOrmTransactionalEntityManager,
TypeOrmTransactionalDecorator,
{
provide: 'MONGO_CLIENT',
provide: MONGO_CLIENT,
useFactory: async () => {
return await MongoConnection.getInstance();
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@ export default class MongoConnection {
this.db = this.client.db(process.env.MONGO_DB_DATABASE);
}
}

export const MONGO_CLIENT = Symbol('MONGO_CLIENT');
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Injectable } from '@nestjs/common';
import { DomainEvent } from '@src/shared/domain/bus/eventBus/domainEvent';
import { EventStoreRepository } from '@src/shared/domain/eventStore/eventStoreRepository';
import MongoConnection from '../mongoConnection';
import MongoConnection, { MONGO_CLIENT } from '../mongoConnection';
import { Inject } from '@src/shared/domain/injector/inject.decorator';

@Injectable()
export default class MongoEventStoreRepository implements EventStoreRepository {
constructor(@Inject('MONGO_CLIENT') private readonly mongo: MongoConnection) {}
constructor(@Inject(MONGO_CLIENT) private readonly mongo: MongoConnection) {}

async save(entity: DomainEvent): Promise<void> {
await this.mongo.db.collection('events').updateOne(
Expand Down
13 changes: 13 additions & 0 deletions src/shared/shared.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,19 @@ import { rabbitMqConfig } from '@src/shared/infrastructure/messenger/rabbitMq/co
import { consumers } from '@src/shared/_dependencyInjection/consumers';
import { services } from '@src/shared/_dependencyInjection/services';
import Environment from '@src/shared/infrastructure/utils/environment';
import { SOCIAL_AUTHENTICATOR } from '@src/languages/domain/auth/socialAuthenticator';
import NestProjectionBus from '@src/shared/infrastructure/bus/nestProjectionBus';
import { TypeOrmTransactionalEntityManager } from '@src/shared/infrastructure/persistence/typeOrm/typeOrmTransactionalEntityManager';
import { MONGO_CLIENT } from '@src/shared/infrastructure/persistence/mongo/mongoConnection';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { dataSourceConfig } from '@src/shared/infrastructure/persistence/typeOrm/dataSource';

@Global()
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRoot(dataSourceConfig),
JwtModule.register({
secret: Environment.getVariable('JWT_SECRET'),
signOptions: { expiresIn: '2h' },
Expand All @@ -38,12 +47,16 @@ import Environment from '@src/shared/infrastructure/utils/environment';
CqrsModule,
ClientsModule,
JwtStrategy,
NestProjectionBus,
TypeOrmTransactionalEntityManager,
MONGO_CLIENT,
LOGGER,
QUERY_BUS,
COMMAND_BUS,
EVENT_BUS,
PROJECTION_BUS,
ASYNC_EVENT_BUS,
SOCIAL_AUTHENTICATOR,
],
})
export class SharedModule {}

0 comments on commit c3adc78

Please sign in to comment.