Files
New-planet-app/app/src/main/java/com/novayaplaneta/di/DatabaseModule.kt

60 lines
1.7 KiB
Kotlin

package com.novayaplaneta.di
import android.content.Context
import androidx.room.Room
import com.novayaplaneta.data.local.NewPlanetDatabase
import com.novayaplaneta.data.local.dao.ChatMessageDao
import com.novayaplaneta.data.local.dao.RewardDao
import com.novayaplaneta.data.local.dao.ScheduleDao
import com.novayaplaneta.data.local.dao.TaskDao
import com.novayaplaneta.data.local.dao.UserDao
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
@Module
@InstallIn(SingletonComponent::class)
object DatabaseModule {
@Provides
@Singleton
fun provideDatabase(@ApplicationContext context: Context): NewPlanetDatabase {
return Room.databaseBuilder(
context,
NewPlanetDatabase::class.java,
"newplanet_database"
)
.fallbackToDestructiveMigration() // Пересоздает БД при изменении схемы (для разработки)
.build()
}
@Provides
fun provideUserDao(database: NewPlanetDatabase): UserDao {
return database.userDao()
}
@Provides
fun provideScheduleDao(database: NewPlanetDatabase): ScheduleDao {
return database.scheduleDao()
}
@Provides
fun provideTaskDao(database: NewPlanetDatabase): TaskDao {
return database.taskDao()
}
@Provides
fun provideRewardDao(database: NewPlanetDatabase): RewardDao {
return database.rewardDao()
}
@Provides
fun provideChatMessageDao(database: NewPlanetDatabase): ChatMessageDao {
return database.chatMessageDao()
}
}