diff --git a/app/src/main/java/de/krisenvorrat/app/MainActivity.kt b/app/src/main/java/de/krisenvorrat/app/MainActivity.kt index af19290..3cea8d3 100644 --- a/app/src/main/java/de/krisenvorrat/app/MainActivity.kt +++ b/app/src/main/java/de/krisenvorrat/app/MainActivity.kt @@ -8,14 +8,22 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview +import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint +import de.krisenvorrat.app.domain.usecase.SeedDatabaseUseCase import de.krisenvorrat.app.ui.MainScreen import de.krisenvorrat.app.ui.theme.KrisenvorratTheme +import kotlinx.coroutines.launch +import javax.inject.Inject @AndroidEntryPoint class MainActivity : ComponentActivity() { + + @Inject internal lateinit var seedDatabaseUseCase: SeedDatabaseUseCase + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + lifecycleScope.launch { seedDatabaseUseCase() } enableEdgeToEdge() setContent { KrisenvorratTheme { diff --git a/app/src/main/java/de/krisenvorrat/app/domain/usecase/SeedDatabaseUseCase.kt b/app/src/main/java/de/krisenvorrat/app/domain/usecase/SeedDatabaseUseCase.kt new file mode 100644 index 0000000..f6ef57a --- /dev/null +++ b/app/src/main/java/de/krisenvorrat/app/domain/usecase/SeedDatabaseUseCase.kt @@ -0,0 +1,34 @@ +package de.krisenvorrat.app.domain.usecase + +import de.krisenvorrat.app.data.db.entity.CategoryEntity +import de.krisenvorrat.app.data.db.entity.LocationEntity +import de.krisenvorrat.app.domain.repository.CategoryRepository +import de.krisenvorrat.app.domain.repository.LocationRepository +import kotlinx.coroutines.flow.first +import javax.inject.Inject + +internal class SeedDatabaseUseCase @Inject constructor( + private val categoryRepository: CategoryRepository, + private val locationRepository: LocationRepository +) { + + suspend operator fun invoke() { + if (categoryRepository.getAll().first().isEmpty()) { + listOf( + "Lebensmittel", + "Wasser", + "Medikamente", + "Ausrüstung", + "Hygiene", + "Energie & Licht", + "Dokumente" + ).forEach { name -> + categoryRepository.insert(CategoryEntity(name = name)) + } + } + + if (locationRepository.getAll().first().isEmpty()) { + locationRepository.insert(LocationEntity(name = "Keller")) + } + } +}