import { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import ProductRepositoryMongo from '../infrastructure/adapters/repository/product.repository.mongo'; import ProductSchema from '../infrastructure/adapters/repository/schema/product.schema'; import GetAllProductsUseCase from './getAllProducts.usecase'; import DomainModule from '../domain/domain.module'; import GetProductUseCase from './getProduct.usecase'; import CreateProductUseCase from './createProduct.usecase'; import DeleteProductUseCase from './deleteProduct.usecase'; import UpdateProductUseCase from './updateProduct.usecase'; import ProductFactory from './factory/product.factory'; @Module({ imports: [ DomainModule, MongooseModule.forFeature([ { name: 'Product', schema: ProductSchema, }, ]), ], providers: [ ProductFactory, GetAllProductsUseCase, GetProductUseCase, CreateProductUseCase, DeleteProductUseCase, UpdateProductUseCase, { provide: 'ProductRepository', useClass: ProductRepositoryMongo, }, ], exports: [ ProductFactory, GetAllProductsUseCase, GetProductUseCase, CreateProductUseCase, DeleteProductUseCase, UpdateProductUseCase, ], }) export default class ApplicationModule {}