feat: ios support
This commit is contained in:
parent
d3edabce36
commit
b187b63195
8 changed files with 73 additions and 4 deletions
|
|
@ -1,7 +1,9 @@
|
|||
package moe.lava.banksia.room
|
||||
|
||||
import androidx.room.AutoMigration
|
||||
import androidx.room.ConstructedBy
|
||||
import androidx.room.RoomDatabase
|
||||
import androidx.room.RoomDatabaseConstructor
|
||||
import androidx.room.TypeConverters
|
||||
import androidx.sqlite.driver.bundled.BundledSQLiteDriver
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -37,6 +39,7 @@ import androidx.room.Database as DatabaseAnnotation
|
|||
]
|
||||
)
|
||||
@TypeConverters(RouteTypeConverter::class)
|
||||
@ConstructedBy(DatabaseConstructor::class)
|
||||
abstract class Database : RoomDatabase() {
|
||||
abstract val versionMetadataDao: VersionMetadataDao
|
||||
abstract val routeDao: RouteDao
|
||||
|
|
@ -54,3 +57,8 @@ abstract class Database : RoomDatabase() {
|
|||
.build()
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("KotlinNoActualForExpect")
|
||||
expect object DatabaseConstructor : RoomDatabaseConstructor<Database> {
|
||||
override fun initialize(): Database
|
||||
}
|
||||
|
|
@ -1,14 +1,30 @@
|
|||
package moe.lava.banksia.di
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import kotlinx.cinterop.ExperimentalForeignApi
|
||||
import moe.lava.banksia.room.Database
|
||||
import org.koin.core.parameter.ParametersHolder
|
||||
import org.koin.core.scope.Scope
|
||||
import org.koin.dsl.module
|
||||
import platform.Foundation.NSDocumentDirectory
|
||||
import platform.Foundation.NSFileManager
|
||||
import platform.Foundation.NSUserDomainMask
|
||||
|
||||
class IosDatabaseBuilder() : PlatformDatabaseBuilder {
|
||||
@OptIn(ExperimentalForeignApi::class)
|
||||
override fun getBuilder(): RoomDatabase.Builder<Database> {
|
||||
TODO("Not yet implemented")
|
||||
val path = NSFileManager.defaultManager.URLForDirectory(
|
||||
directory = NSDocumentDirectory,
|
||||
inDomain = NSUserDomainMask,
|
||||
appropriateForURL = null,
|
||||
create = false,
|
||||
error = null,
|
||||
)
|
||||
val dbPath = path!!.path + "/room.db"
|
||||
return Room.databaseBuilder<Database>(
|
||||
name = dbPath
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
package moe.lava.banksia.util
|
||||
|
||||
import platform.Foundation.NSLog
|
||||
|
||||
// TODO: use better logging functions maybe(?)
|
||||
actual fun log(tag: String, msg: String) {
|
||||
TODO("Not yet implemented")
|
||||
NSLog("$tag: $msg")
|
||||
}
|
||||
|
||||
actual fun error(tag: String, msg: String, throwable: Throwable?) {
|
||||
TODO("Not yet implemented")
|
||||
NSLog("$tag: $msg: ${throwable?.stackTraceToString()}")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue