init #48
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user