Allow foreign keys

pull/1323/head
lihenggui 2 years ago
parent 63835eb5c5
commit cdc9336d8b

@ -17,6 +17,7 @@
package com.google.samples.apps.nowinandroid.core.database
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.SqlDriver
@ -32,6 +33,15 @@ actual class DriverModule(private val context: Context) {
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
): SqlDriver {
return AndroidSqliteDriver(schema.synchronous(), context, "nia-database.db")
val synchronousSchema = schema.synchronous()
return AndroidSqliteDriver(schema = synchronousSchema,
context = context,
name = "nia-database.db",
callback = object : AndroidSqliteDriver.Callback(synchronousSchema) {
override fun onOpen(db: SupportSQLiteDatabase) {
db.setForeignKeyConstraintsEnabled(true)
}
}
)
}
}

@ -18,8 +18,12 @@ package com.google.samples.apps.nowinandroid.core.database
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
import java.util.Properties
actual suspend fun createDriver(): SqlDriver {
return JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
return JdbcSqliteDriver(
url = JdbcSqliteDriver.IN_MEMORY,
properties = Properties().apply { put("foreign_keys", "true") },
)
.also { NiaDatabase.Schema.create(it).await() }
}

@ -21,13 +21,17 @@ import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
import me.tatarka.inject.annotations.Provides
import java.util.Properties
actual class DriverModule {
@Provides
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
): SqlDriver {
return JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
return JdbcSqliteDriver(
url = JdbcSqliteDriver.IN_MEMORY,
properties = Properties().apply { put("foreign_keys", "true") },
)
.also { schema.create(it).await() }
}
}

@ -19,8 +19,12 @@ package com.google.samples.apps.nowinandroid.core.database
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
import com.google.samples.apps.nowinandroid.core.database.NiaDatabase.Companion.Schema
import java.util.Properties
actual suspend fun createDriver(): SqlDriver {
return JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
return JdbcSqliteDriver(
url = JdbcSqliteDriver.IN_MEMORY,
properties = Properties().apply { put("foreign_keys", "true") },
)
.also { Schema.create(it).await() }
}

@ -21,6 +21,7 @@ import app.cash.sqldelight.db.QueryResult
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 me.tatarka.inject.annotations.Provides
actual class DriverModule {
@ -29,6 +30,15 @@ actual class DriverModule {
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,
): SqlDriver {
return NativeSqliteDriver(schema.synchronous(), "nia-database.db")
val synchronousSchema = schema.synchronous()
return NativeSqliteDriver(
schema = synchronousSchema,
name = "nia-database.db",
onConfiguration = { config: DatabaseConfiguration ->
config.copy(
extendedConfig = DatabaseConfiguration.Extended(foreignKeyConstraints = true),
)
},
)
}
}

@ -19,8 +19,17 @@ package com.google.samples.apps.nowinandroid.core.database
import app.cash.sqldelight.async.coroutines.synchronous
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.driver.native.NativeSqliteDriver
import co.touchlab.sqliter.DatabaseConfiguration
import com.google.samples.apps.nowinandroid.core.database.NiaDatabase.Companion.Schema
actual suspend fun createDriver(): SqlDriver {
return NativeSqliteDriver(Schema.synchronous(), "nia-database-test.db")
return NativeSqliteDriver(
schema = Schema.synchronous(),
name = "nia-database-test.db",
onConfiguration = { config: DatabaseConfiguration ->
config.copy(
extendedConfig = DatabaseConfiguration.Extended(foreignKeyConstraints = true),
)
},
)
}

Loading…
Cancel
Save