Move DriverModule to di package

pull/2064/head
lihenggui 2 years ago
parent 3b1f03d386
commit c2f9005333

@ -14,15 +14,16 @@
* limitations under the License.
*/
package com.google.samples.apps.nowinandroid.core.database
package com.google.samples.apps.nowinandroid.core.database.di
import android.content.Context
import androidx.sqlite.db.SupportSQLiteDatabase
import app.cash.sqldelight.async.coroutines.synchronous
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.QueryResult.AsyncValue
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import app.cash.sqldelight.driver.android.AndroidSqliteDriver.Callback
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
@ -31,18 +32,18 @@ internal actual abstract class DriverModule(private val context: Context) {
@Provides
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
schema: SqlSchema<AsyncValue<Unit>>,
): SqlDriver {
val synchronousSchema = schema.synchronous()
return AndroidSqliteDriver(
schema = synchronousSchema,
context = context,
name = "nia-database.db",
callback = object : AndroidSqliteDriver.Callback(synchronousSchema) {
callback = object : Callback(synchronousSchema) {
override fun onOpen(db: SupportSQLiteDatabase) {
db.setForeignKeyConstraintsEnabled(true)
}
},
)
}
}
}

@ -14,9 +14,9 @@
* limitations under the License.
*/
package com.google.samples.apps.nowinandroid.core.database
package com.google.samples.apps.nowinandroid.core.database.di
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.QueryResult.AsyncValue
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import me.tatarka.inject.annotations.Provides
@ -24,6 +24,6 @@ import me.tatarka.inject.annotations.Provides
internal expect abstract class DriverModule {
@Provides
suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
schema: SqlSchema<AsyncValue<Unit>>,
): SqlDriver
}
}

@ -14,12 +14,13 @@
* limitations under the License.
*/
package com.google.samples.apps.nowinandroid.core.database
package com.google.samples.apps.nowinandroid.core.database.di
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.QueryResult.AsyncValue
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver.Companion
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
import java.util.Properties
@ -28,7 +29,7 @@ import java.util.Properties
internal actual abstract class DriverModule {
@Provides
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
schema: SqlSchema<AsyncValue<Unit>>,
): SqlDriver {
return JdbcSqliteDriver(
url = JdbcSqliteDriver.IN_MEMORY,
@ -36,4 +37,4 @@ internal actual abstract class DriverModule {
)
.also { schema.create(it).await() }
}
}
}

@ -14,14 +14,15 @@
* limitations under the License.
*/
package com.google.samples.apps.nowinandroid.core.database
package com.google.samples.apps.nowinandroid.core.database.di
import app.cash.sqldelight.async.coroutines.synchronous
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.QueryResult.AsyncValue
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.native.NativeSqliteDriver
import co.touchlab.sqliter.DatabaseConfiguration
import co.touchlab.sqliter.DatabaseConfiguration.Extended
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
@ -30,7 +31,7 @@ internal actual abstract class DriverModule {
@Provides
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
schema: SqlSchema<AsyncValue<Unit>>,
): SqlDriver {
val synchronousSchema = schema.synchronous()
return NativeSqliteDriver(
@ -38,9 +39,9 @@ internal actual abstract class DriverModule {
name = "nia-database.db",
onConfiguration = { config: DatabaseConfiguration ->
config.copy(
extendedConfig = DatabaseConfiguration.Extended(foreignKeyConstraints = true),
extendedConfig = Extended(foreignKeyConstraints = true),
)
},
)
}
}
}
Loading…
Cancel
Save