Skip to content

Commit

Permalink
Fix jvm migration and sync monster after imported creatures
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandregpereira committed Jul 19, 2024
1 parent 8c55f74 commit 09b2a73
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ getMonsters:
SELECT * FROM MonsterEntity;

getMonstersEdited:
SELECT * FROM MonsterEntity WHERE isClone == 2;
SELECT * FROM MonsterEntity WHERE isClone > 0;
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,45 @@ import org.koin.core.scope.Scope
import java.io.File

internal actual fun Scope.createSqlDriver(): SqlDriver {
val databasePath = getDatabasePath()
val driver: SqlDriver = JdbcSqliteDriver("jdbc:sqlite:$databasePath")

val currentVersion = driver.getDatabaseVersion()
val schemaVersion = Database.Schema.version
if (schemaVersion > currentVersion) {
Database.Schema.migrate(driver, currentVersion, schemaVersion)
driver.setDatabaseVersion(schemaVersion)
println("init: migrated from $currentVersion to $schemaVersion")
} else {
Database.Schema.create(driver)
}

return driver
}

private fun getDatabasePath(): String {
val userFolder = System.getProperty("user.home")
val appDataFolder = File(userFolder, ".monster-compendium")
if (appDataFolder.exists().not()) {
appDataFolder.mkdirs()
}
val databasePath = File(appDataFolder, "hunter-database.db")
val driver: SqlDriver = JdbcSqliteDriver("jdbc:sqlite:${databasePath.absolutePath}")
Database.Schema.create(driver)
return driver
return databasePath.absolutePath
}

private fun SqlDriver.getDatabaseVersion(): Int {
val sqlCursor = this.executeQuery(
identifier = null,
sql = "PRAGMA user_version;",
parameters = 0,
binders = null
)

val initialDatabaseVersion = 25
return sqlCursor.getLong(0)?.toInt()
?.takeUnless { it == 0 } ?: initialDatabaseVersion
}

private fun SqlDriver.setDatabaseVersion(version: Int) {
this.execute(null, "PRAGMA user_version = $version;", 0, null)
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class SyncMonstersUseCase internal constructor(
}
.reduce { accumulator, value -> accumulator + value }
}
.filterMonstersNotEdited()
.filterModifiedMonsters()
.flatMapLatest { monsters ->
saveMonstersUseCase(monsters = monsters, isSync = true)
}.flatMapLatest {
Expand Down Expand Up @@ -92,7 +92,7 @@ class SyncMonstersUseCase internal constructor(
it.appendMonsterImages(monsterImages)
}

private fun Flow<List<Monster>>.filterMonstersNotEdited(): Flow<List<Monster>> = map { monsters ->
private fun Flow<List<Monster>>.filterModifiedMonsters(): Flow<List<Monster>> = map { monsters ->
val monstersEditedIndexes = localRepository.getMonsterPreviewsEdited().single()
.map { it.index }
.toSet()
Expand Down

0 comments on commit 09b2a73

Please sign in to comment.