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

Class Class, % Method, % Branch, % Line, % Instruction, %
RoomModule 0% (0/1) 0% (0/7) 0% (0/7) 0% (0/15)


 package com.imecatro.demosales.di
 
 import android.content.Context
 import com.imecatro.demosales.data.clients.datasource.ClientsDao
 import com.imecatro.demosales.data.sales.datasource.OrdersRoomDao
 import com.imecatro.demosales.data.sales.datasource.SalesRoomDao
 import com.imecatro.demosales.datasource.AppRoomDatabase
 import com.imecatro.products.data.datasource.CategoriesDao
 import com.imecatro.products.data.datasource.ProductsDao
 import dagger.Module
 import dagger.Provides
 import dagger.hilt.InstallIn
 import dagger.hilt.android.qualifiers.ApplicationContext
 import dagger.hilt.components.SingletonComponent
 import javax.inject.Singleton
 
 /**
  * Hilt module for providing Room database and DAO dependencies.
  *
  * This module is responsible for initializing the [AppRoomDatabase] and providing
  * specific DAO instances to the rest of the application.
  */
 @Module
 @InstallIn(SingletonComponent::class)
 class RoomModule {
 
     /**
      * Provides a singleton instance of [AppRoomDatabase].
      *
      * @param app The application context.
      * @return The initialized [AppRoomDatabase] instance.
      */
     @Provides
     @Singleton
     fun provideAppDatabase(@ApplicationContext app: Context): AppRoomDatabase {
         return AppRoomDatabase.Companion.initDatabase(app)
     }
 
     /**
      * Provides the [ProductsDao] instance from the database.
      *
      * @param appDatabase The application database.
      * @return The [ProductsDao] instance.
      */
     @Provides
     fun providesProductsDao(appDatabase: AppRoomDatabase): ProductsDao {
         return appDatabase.productsRoomDao()
     }
 
     /**
      * Provides the [CategoriesDao] instance from the database.
      *
      * @param appDatabase The application database.
      * @return The [CategoriesDao] instance.
      */
     @Provides
     fun providesCategoriesDao(appDatabase: AppRoomDatabase): CategoriesDao {
         return appDatabase.categoriesRoomDao()
     }
 
     /**
      * Provides the [SalesRoomDao] instance from the database.
      *
      * @param appDatabase The application database.
      * @return The [SalesRoomDao] instance.
      */
     @Provides
     fun providesSalessDao(appDatabase: AppRoomDatabase): SalesRoomDao {
         return appDatabase.salesRoomDao()
     }
 
     /**
      * Provides the [OrdersRoomDao] instance from the database.
      *
      * @param appDatabase The application database.
      * @return The [OrdersRoomDao] instance.
      */
     @Provides
     fun providesOrdersDao(appDatabase: AppRoomDatabase): OrdersRoomDao {
         return appDatabase.ordersRoomDao()
     }
 
     /**
      * Provides the [ClientsDao] instance from the database.
      *
      * @param appDatabase The application database.
      * @return The [ClientsDao] instance.
      */
     @Provides
     fun providesClientsDao(appDatabase: AppRoomDatabase): ClientsDao {
         return appDatabase.clientsRoomDao()
     }
 }