This commit is contained in:
Rafal Wisniewski
2026-04-30 09:58:14 +02:00
parent 43aec61c75
commit bfbb1056d7
2 changed files with 36 additions and 57 deletions

View File

@@ -10,7 +10,9 @@ plugins {
android { android {
namespace = "cc.n0th1ng.tripmoney" namespace = "cc.n0th1ng.tripmoney"
compileSdk = 36 compileSdk = 36
buildFeatures {
buildConfig = true
}
defaultConfig { defaultConfig {
applicationId = "cc.n0th1ng.tripmoney" applicationId = "cc.n0th1ng.tripmoney"
minSdk = 24 minSdk = 24

View File

@@ -7,6 +7,7 @@ import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.TypeConverters import androidx.room.TypeConverters
import cc.n0th1ng.tripmoney.BuildConfig
import cc.n0th1ng.tripmoney.data.dao.CategoryDao import cc.n0th1ng.tripmoney.data.dao.CategoryDao
import cc.n0th1ng.tripmoney.data.dao.ExchangeRateDao import cc.n0th1ng.tripmoney.data.dao.ExchangeRateDao
import cc.n0th1ng.tripmoney.data.dao.ExpenseDao import cc.n0th1ng.tripmoney.data.dao.ExpenseDao
@@ -34,8 +35,7 @@ import javax.inject.Singleton
import kotlin.random.Random import kotlin.random.Random
@Database( @Database(
entities = [Trip::class, Expense::class, Category::class, ExchangeRate::class], entities = [Trip::class, Expense::class, Category::class, ExchangeRate::class], version = 1
version = 1
) )
@TypeConverters(Converters::class) @TypeConverters(Converters::class)
abstract class TripDatabase : RoomDatabase() { abstract class TripDatabase : RoomDatabase() {
@@ -57,22 +57,28 @@ object DatabaseModule {
fun provideTripDatabase( fun provideTripDatabase(
@ApplicationContext context: Context @ApplicationContext context: Context
): TripDatabase { ): TripDatabase {
// val db: TripDatabase = Room.inMemoryDatabaseBuilder( val builder = if (BuildConfig.DEBUG) Room.inMemoryDatabaseBuilder(
val db: TripDatabase = Room.databaseBuilder( context = context, klass = TripDatabase::class.java
) else Room.databaseBuilder(
name = "tripmoney_db", name = "tripmoney_db",
context = context, context = context,
klass = TripDatabase::class.java, klass = TripDatabase::class.java,
) )
.fallbackToDestructiveMigration() // TODO Handle schema changes during dev
.build()
CoroutineScope(Dispatchers.IO).launch { val db: TripDatabase =
DatabasePrepopulator( builder.fallbackToDestructiveMigration() // TODO Handle schema changes during dev
tripDao = db.tripDao(), .build()
categoryDao = db.categoryDao(),
expenseDao = db.expenseDao() if (BuildConfig.DEBUG) {
).prepopulate() CoroutineScope(Dispatchers.IO).launch {
DatabasePrepopulator(
tripDao = db.tripDao(),
categoryDao = db.categoryDao(),
expenseDao = db.expenseDao()
).prepopulate()
}
} }
return db return db
} }
@@ -146,74 +152,46 @@ private class DatabasePrepopulator(
val sampleCategories = listOf( val sampleCategories = listOf(
Category( Category(
name = "Hotel", name = "Hotel", icon = Icons.HOTEL, color = colors.random()
icon = Icons.HOTEL,
color = colors.random()
), ),
Category( Category(
name = "Jedzenie", name = "Jedzenie", icon = Icons.RESTAURANT, color = colors.random()
icon = Icons.RESTAURANT,
color = colors.random()
), ),
Category( Category(
name = "Transport", name = "Transport", icon = Icons.FLIGHT, color = colors.random()
icon = Icons.FLIGHT,
color = colors.random()
), ),
Category( Category(
name = "Rozrywka", name = "Rozrywka", icon = Icons.ATTRACTION, color = colors.random()
icon = Icons.ATTRACTION,
color = colors.random()
), ),
Category( Category(
name = "Zakupy", name = "Zakupy", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy1", name = "Zakupy1", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy2", name = "Zakupy2", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy3", name = "Zakupy3", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy4", name = "Zakupy4", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy5", name = "Zakupy5", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy6", name = "Zakupy6", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy7", name = "Zakupy7", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy8", name = "Zakupy8", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
Category( Category(
name = "Zakupy9", name = "Zakupy9", icon = Icons.GROCERIES, color = colors.random()
icon = Icons.GROCERIES,
color = colors.random()
), ),
) )
@@ -239,8 +217,7 @@ private class DatabasePrepopulator(
note = if (i % 3 == 0) "Some note" else "", note = if (i % 3 == 0) "Some note" else "",
datetime = datetime, datetime = datetime,
rate = if (Random.nextBoolean()) Random.nextDouble( rate = if (Random.nextBoolean()) Random.nextDouble(
0.1, 0.1, 5.0
5.0
) else 1.0 ) else 1.0
) )
expense expense