Coverage Summary for Class: RepositoryModule (com.imecatro.demosales.di)

Class Class, % Method, % Branch, % Line, % Instruction, %
RepositoryModule 0% (0/1) 0% (0/7) 0% (0/7) 0% (0/35)


 package com.imecatro.demosales.di
 
 import com.imecatro.demosales.data.clients.datasource.ClientsDao
 import com.imecatro.demosales.data.clients.repository.ClientsRepositoryImpl
 import com.imecatro.demosales.data.sales.add.repository.AddSaleRepositoryImpl
 import com.imecatro.demosales.data.sales.datasource.OrdersRoomDao
 import com.imecatro.demosales.data.sales.datasource.SalesRoomDao
 import com.imecatro.demosales.data.sales.details.DetailsSaleRepositoryImpl
 import com.imecatro.demosales.data.sales.list.repository.AllSalesRepositoryImpl
 import com.imecatro.demosales.domain.clients.repository.ClientsRepository
 import com.imecatro.demosales.domain.products.repository.CategoriesRepository
 import com.imecatro.demosales.domain.products.repository.ProductsRepository
 import com.imecatro.demosales.domain.sales.add.repository.AddSaleRepository
 import com.imecatro.demosales.domain.sales.details.DetailsSaleRepository
 import com.imecatro.demosales.domain.sales.list.repository.AllSalesRepository
 import com.imecatro.products.data.datasource.CategoriesDao
 import com.imecatro.products.data.datasource.ProductsDao
 import com.imecatro.products.data.repository.CategoriesRepositoryImpl
 import com.imecatro.products.data.repository.ProductsRepositoryImpl
 import dagger.Module
 import dagger.Provides
 import dagger.hilt.InstallIn
 import dagger.hilt.components.SingletonComponent
 import javax.inject.Singleton
 
 /**
  * Hilt module for providing Repository implementations.
  *
  * This module binds the domain-level Repository interfaces to their concrete
  * data-level implementations using Room as the data source.
  */
 @Module
 @InstallIn(SingletonComponent::class)
 class RepositoryModule {
 
     /**
      * Provides the [ProductsRepository] implementation.
      *
      * @param dao The DAO for products.
      * @param categories The DAO for categories.
      * @return An instance of [ProductsRepositoryImpl].
      */
     @Provides
     fun provideRoomRepositoryImplementation(
         dao: ProductsDao,
         categories: CategoriesDao
     ): ProductsRepository =
         ProductsRepositoryImpl(dao, categories)
 
     /**
      * Provides the [CategoriesRepository] implementation.
      *
      * @param categories The DAO for categories.
      * @return An instance of [CategoriesRepositoryImpl].
      */
     @Provides
     fun providesCategoriesRepoImplementation(categories: CategoriesDao): CategoriesRepository =
         CategoriesRepositoryImpl(categories)
 
     /**
      * Provides the [AllSalesRepository] implementation for listing sales.
      *
      * @param dao The DAO for sales.
      * @return An instance of [AllSalesRepositoryImpl].
      */
     @Provides
     fun providesSalesListRepository(
         dao: SalesRoomDao
     ): AllSalesRepository =
         AllSalesRepositoryImpl(dao)
 
     /**
      * Provides a singleton instance of [AddSaleRepository] for managing new sales.
      *
      * @param dao The DAO for sales.
      * @param ordersRoomDao The DAO for orders.
      * @return An instance of [AddSaleRepositoryImpl].
      */
     @Provides
     @Singleton
     fun providesAddSaleRepoImpl(
         dao: SalesRoomDao,
         ordersRoomDao: OrdersRoomDao
     ): AddSaleRepository = AddSaleRepositoryImpl(dao, ordersRoomDao)
 
 
     /**
      * Provides the [DetailsSaleRepository] implementation for viewing sale details.
      *
      * @param salesRoomDao The DAO for sales.
      * @param ordersRoomDao The DAO for orders.
      * @return An instance of [DetailsSaleRepositoryImpl].
      */
     @Provides
     fun providesDetailsSaleRepoImpl(
         salesRoomDao: SalesRoomDao,
         ordersRoomDao: OrdersRoomDao
     ): DetailsSaleRepository = DetailsSaleRepositoryImpl(salesRoomDao, ordersRoomDao)
 
 
     /**
      * Provides a singleton instance of [ClientsRepository].
      *
      * @param clientsDao The DAO for clients.
      * @return An instance of [ClientsRepositoryImpl].
      */
     @Provides
     @Singleton
     fun providesClientsRepository(
         clientsDao: ClientsDao
     ): ClientsRepository = ClientsRepositoryImpl(clientsDao)
 }