Feat log db query (#471)

Co-authored-by: Florent Champigny <florent@bere.al>
This commit is contained in:
Florent CHAMPIGNY 2025-12-30 15:02:29 +01:00 committed by GitHub
parent 20b7b7b29c
commit 24bb623ebd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
48 changed files with 8659 additions and 129 deletions

View file

@ -2,20 +2,29 @@ package io.github.openflocon.flocon.myapplication.multi
import android.content.Context
import androidx.room.Room
import androidx.room.RoomDatabase
import io.github.openflocon.flocon.myapplication.multi.database.DogDatabase
import io.github.openflocon.flocon.myapplication.multi.database.FoodDatabase
import io.github.openflocon.flocon.plugins.database.floconLogDatabaseQuery
import java.util.concurrent.Executor
import java.util.concurrent.Executors
object Databases {
@Volatile
private var dogDatabase: DogDatabase? = null
fun getDogDatabase(context: Context): DogDatabase {
val dbName = "dogs_database"
return dogDatabase ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
DogDatabase::class.java,
"dogs_database"
).fallbackToDestructiveMigration().build()
)
.setQueryCallback({ sqlQuery, bindArgs -> floconLogDatabaseQuery(
dbName = dbName, sqlQuery = sqlQuery, bindArgs = bindArgs
) }, Executors.newSingleThreadExecutor())
.fallbackToDestructiveMigration().build()
dogDatabase = instance
instance
}

View file

@ -12,10 +12,13 @@ import io.github.openflocon.flocon.myapplication.multi.Databases.getDogDatabase
import io.github.openflocon.flocon.myapplication.multi.Databases.getFoodDatabase
import io.github.openflocon.flocon.myapplication.multi.database.FoodDatabase
import io.github.openflocon.flocon.myapplication.multi.database.initializeDatabases
import io.github.openflocon.flocon.myapplication.multi.database.model.DogEntity
import io.github.openflocon.flocon.myapplication.multi.sharedpreferences.initializeSharedPreferences
import io.github.openflocon.flocon.myapplication.multi.ui.App
import io.ktor.client.HttpClient
import io.ktor.client.engine.okhttp.OkHttp
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@ -43,8 +46,11 @@ class MainActivity : ComponentActivity() {
DummyHttpKtorCaller.initialize(ktorClient)
initializeSharedPreferences(applicationContext)
val dogDatabase = getDogDatabase(this)
initializeDatabases(
dogDatabase = getDogDatabase(this),
dogDatabase = dogDatabase,
foodDatabase = getFoodDatabase(this),
)

View file

@ -16,11 +16,14 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import io.github.openflocon.flocon.myapplication.multi.DummyHttpKtorCaller
import io.github.openflocon.flocon.myapplication.multi.dashboard.initializeDashboard
import io.github.openflocon.flocon.myapplication.multi.database.model.DogEntity
import io.github.openflocon.flocon.plugins.analytics.floconAnalytics
import io.github.openflocon.flocon.plugins.analytics.model.AnalyticsEvent
import io.github.openflocon.flocon.plugins.analytics.model.analyticsProperty
import io.github.openflocon.flocon.plugins.tables.floconTable
import io.github.openflocon.flocon.plugins.tables.model.toParam
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlin.random.Random
@Composable