fix: Seed-Daten beim App-Start prüfen und ggf. einfügen
RoomDatabase.Callback.onCreate() wird bei adb install -r nicht erneut ausgeführt, da die DB bereits existiert. Kategorien und Orte blieben deshalb leer. Lösung: SeedDatabaseUseCase prüft beim App-Start ob Kategorien/Orte vorhanden sind und befüllt die Tabellen nur wenn sie leer sind.
This commit is contained in:
parent
9cc15ffaad
commit
caf7002406
2 changed files with 42 additions and 0 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue