Skip to content

Commit

Permalink
Finish up implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
AlecKazakova committed Mar 28, 2023
1 parent 514d496 commit 2a3afa8
Show file tree
Hide file tree
Showing 35 changed files with 201 additions and 152 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/PR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
# for a log of why this is needed, see: https://github.com/touchlab/SQLiter/pull/38#issuecomment-867171789
#
# Windows checks are temporarily disabled until fixed, see: https://github.com/cashapp/sqldelight/issues/2579
os: [ macOS-latest, ubuntu-18.04 ]
os: [ macOS-latest, ubuntu-22.04 ]
job: [ instrumentation, test, gradle-plugin-tests ]
exclude:
- os: windows-latest
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.squareup.sqldelight.android

import androidx.test.core.app.ApplicationProvider.getApplicationContext
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlPreparedStatement
import app.cash.sqldelight.db.SqlSchema
Expand All @@ -17,7 +18,7 @@ import org.robolectric.RobolectricTestRunner

@RunWith(RobolectricTestRunner::class)
class AndroidDriverTest : DriverTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
return AndroidSqliteDriver(schema, getApplicationContext())
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.squareup.sqldelight.android

import androidx.test.core.app.ApplicationProvider.getApplicationContext
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
Expand All @@ -10,7 +11,7 @@ import org.robolectric.RobolectricTestRunner

@RunWith(RobolectricTestRunner::class)
class AndroidQueryTest : QueryTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
return AndroidSqliteDriver(schema, getApplicationContext())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.test.core.app.ApplicationProvider.getApplicationContext
import app.cash.sqldelight.Transacter
import app.cash.sqldelight.TransactionWithReturn
import app.cash.sqldelight.TransactionWithoutReturn
import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
Expand All @@ -17,7 +18,7 @@ import kotlin.concurrent.thread

@RunWith(RobolectricTestRunner::class)
class AndroidTransacterTest : TransacterTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
return AndroidSqliteDriver(schema, getApplicationContext())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import kotlin.test.assertTrue

abstract class DriverTest {
protected lateinit var driver: SqlDriver
protected val schema = object : SqlSchema {
protected val schema = object : SqlSchema<QueryResult.Value<Unit>> {
override val version: Int = 1

override fun create(driver: SqlDriver): QueryResult<Unit> {
override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
driver.execute(
0,
"""
Expand Down Expand Up @@ -59,7 +59,7 @@ abstract class DriverTest {
}
private var transacter = AtomicReference<Transacter?>(null)

abstract fun setupDatabase(schema: SqlSchema): SqlDriver
abstract fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver

private fun changes(): Long? {
// wrap in a transaction to ensure read happens on transaction thread/connection
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ abstract class QueryTest {

private lateinit var driver: SqlDriver

abstract fun setupDatabase(schema: SqlSchema): SqlDriver
abstract fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver

@BeforeTest fun setup() {
driver = setupDatabase(
schema = object : SqlSchema {
schema = object : SqlSchema<QueryResult.Value<Unit>> {
override val version: Int = 1

override fun create(driver: SqlDriver): QueryResult<Unit> {
override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
driver.execute(
null,
"""
Expand All @@ -50,7 +50,7 @@ abstract class QueryTest {
oldVersion: Int,
newVersion: Int,
vararg callbacks: AfterVersion,
): QueryResult<Unit> {
): QueryResult.Value<Unit> {
// No-op.
return QueryResult.Unit
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@ abstract class TransacterTest {
protected lateinit var transacter: TransacterImpl
private lateinit var driver: SqlDriver

abstract fun setupDatabase(schema: SqlSchema): SqlDriver
abstract fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver

@BeforeTest fun setup() {
val driver = setupDatabase(
object : SqlSchema {
object : SqlSchema<QueryResult.Value<Unit>> {
override val version = 1
override fun create(driver: SqlDriver): QueryResult<Unit> = QueryResult.Unit
override fun create(driver: SqlDriver): QueryResult.Value<Unit> = QueryResult.Unit
override fun migrate(
driver: SqlDriver,
oldVersion: Int,
newVersion: Int,
vararg callbacks: AfterVersion,
): QueryResult<Unit> = QueryResult.Unit
): QueryResult.Value<Unit> = QueryResult.Unit
},
)
transacter = object : TransacterImpl(driver) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ abstract class LazyDriverBaseTest {
driver.close()
}

protected fun defaultSchema(): SqlSchema {
return object : SqlSchema {
protected fun defaultSchema(): SqlSchema<QueryResult.Value<Unit>> {
return object : SqlSchema<QueryResult.Value<Unit>> {
override val version: Int = 1

override fun create(driver: SqlDriver): QueryResult<Unit> {
override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
driver.execute(
20,
"""
Expand Down Expand Up @@ -86,7 +86,7 @@ abstract class LazyDriverBaseTest {
}

private fun setupDatabase(
schema: SqlSchema,
schema: SqlSchema<QueryResult.Value<Unit>>,
config: DatabaseConfiguration = defaultConfiguration(schema),
): NativeSqliteDriver {
deleteDatabase(config.name!!)
Expand All @@ -95,7 +95,7 @@ abstract class LazyDriverBaseTest {
return NativeSqliteDriver(manager!!)
}

protected fun defaultConfiguration(schema: SqlSchema): DatabaseConfiguration {
protected fun defaultConfiguration(schema: SqlSchema<QueryResult.Value<Unit>>): DatabaseConfiguration {
return DatabaseConfiguration(
name = "testdb",
version = 1,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.squareup.sqldelight.drivers.native

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
Expand All @@ -8,15 +9,15 @@ import co.touchlab.sqliter.DatabaseFileContext.deleteDatabase
import com.squareup.sqldelight.driver.test.DriverTest

class NativeDriverTest : DriverTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
val name = "testdb"
deleteDatabase(name)
return NativeSqliteDriver(schema, name)
}
}

class NativeDriverMemoryTest : DriverTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
return inMemoryDriver(schema)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.squareup.sqldelight.drivers.native

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
Expand All @@ -8,15 +9,15 @@ import co.touchlab.sqliter.DatabaseFileContext
import com.squareup.sqldelight.driver.test.QueryTest

class NativeQueryTest : QueryTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
val name = "testdb"
DatabaseFileContext.deleteDatabase(name)
return NativeSqliteDriver(schema, name)
}
}

class NativeQueryMemoryTest : QueryTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
return inMemoryDriver(schema)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.squareup.sqldelight.drivers.native

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
Expand All @@ -8,15 +9,15 @@ import co.touchlab.sqliter.DatabaseFileContext.deleteDatabase
import com.squareup.sqldelight.driver.test.TransacterTest

class NativeTransacterTest : TransacterTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
val name = "testdb"
deleteDatabase(name)
return NativeSqliteDriver(schema, name)
}
}

class NativeTransacterMemoryTest : TransacterTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
return inMemoryDriver(schema)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ abstract class BaseConcurrencyTest {
}

fun setupDatabase(
schema: SqlSchema,
schema: SqlSchema<QueryResult.Value<Unit>>,
dbType: DbType,
configBase: DatabaseConfiguration,
maxReaderConnections: Int = 4,
Expand Down Expand Up @@ -111,10 +111,10 @@ abstract class BaseConcurrencyTest {
configBase: DatabaseConfiguration = DatabaseConfiguration(name = null, version = 1, create = {}),
): SqlDriver {
return setupDatabase(
schema = object : SqlSchema {
schema = object : SqlSchema<QueryResult.Value<Unit>> {
override val version: Int = 1

override fun create(driver: SqlDriver): QueryResult<Unit> {
override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
driver.execute(
null,
"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.squareup.sqldelight.driver.sqlite

import app.cash.sqldelight.db.QueryResult
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.IN_MEMORY
import com.squareup.sqldelight.driver.test.DriverTest

class SqliteDriverTest : DriverTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
val database = JdbcSqliteDriver(IN_MEMORY)
schema.create(database)
return database
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.squareup.sqldelight.driver.sqlite

import app.cash.sqldelight.db.QueryResult
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.IN_MEMORY
import com.squareup.sqldelight.driver.test.QueryTest

class SqliteQueryTest : QueryTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
val database = JdbcSqliteDriver(IN_MEMORY)
schema.create(database)
return database
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.squareup.sqldelight.driver.sqlite

import app.cash.sqldelight.db.QueryResult
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.IN_MEMORY
import com.squareup.sqldelight.driver.test.TransacterTest

class SqliteTransacterTest : TransacterTest() {
override fun setupDatabase(schema: SqlSchema): SqlDriver {
override fun setupDatabase(schema: SqlSchema<QueryResult.Value<Unit>>): SqlDriver {
val database = JdbcSqliteDriver(IN_MEMORY)
schema.create(database)
return database
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ import kotlin.js.Promise

fun Promise<Database>.driver(): Promise<SqlDriver> = then { JsSqlDriver(it) }

fun Promise<SqlDriver>.withSchema(schema: SqlSchema? = null): Promise<SqlDriver> = then {
fun Promise<SqlDriver>.withSchema(schema: SqlSchema<QueryResult.Value<Unit>>? = null): Promise<SqlDriver> = then {
schema?.create(it)
it
}

fun Promise<SqlDriver>.transacter(): Promise<Transacter> = then { object : TransacterImpl(it) {} }

fun initSqlDriver(schema: SqlSchema? = null): Promise<SqlDriver> = initDb().driver().withSchema(schema)
fun initSqlDriver(schema: SqlSchema<QueryResult.Value<Unit>>? = null): Promise<SqlDriver> = initDb().driver().withSchema(schema)

class JsSqlDriver(private val db: Database) : SqlDriver {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import kotlin.test.assertTrue
class JsDriverTest {

private lateinit var driverPromise: Promise<SqlDriver>
private val schema = object : SqlSchema {
private val schema = object : SqlSchema<QueryResult.Value<Unit>> {
override val version: Int = 1

override fun create(driver: SqlDriver): QueryResult<Unit> {
override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
driver.execute(
0,
"""
Expand Down Expand Up @@ -54,7 +54,7 @@ class JsDriverTest {
oldVersion: Int,
newVersion: Int,
vararg callbacks: AfterVersion,
): QueryResult<Unit> {
): QueryResult.Value<Unit> {
// No-op.
return QueryResult.Unit
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ class JsQueryTest {
)
}

private val schema = object : SqlSchema {
private val schema = object : SqlSchema<QueryResult.Value<Unit>> {
override val version: Int = 1

override fun create(driver: SqlDriver): QueryResult<Unit> {
override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
driver.execute(
null,
"""
Expand All @@ -48,7 +48,7 @@ class JsQueryTest {
oldVersion: Int,
newVersion: Int,
vararg callbacks: AfterVersion,
): QueryResult<Unit> {
): QueryResult.Value<Unit> {
// No-op.
return QueryResult.Unit
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import kotlin.test.assertTrue

class JsTransacterTest {

private val schema = object : SqlSchema {
private val schema = object : SqlSchema<QueryResult.Value<Unit>> {
override val version = 1
override fun create(driver: SqlDriver) = QueryResult.Unit
override fun migrate(
Expand Down
Loading

0 comments on commit 2a3afa8

Please sign in to comment.