45 lines
1.5 KiB
Kotlin
45 lines
1.5 KiB
Kotlin
package solutions.bitbadger.documents.java.integration.sqlite
|
|
|
|
import AutoId
|
|
import solutions.bitbadger.documents.Configuration
|
|
import solutions.bitbadger.documents.Parameter
|
|
import solutions.bitbadger.documents.ParameterType
|
|
import solutions.bitbadger.documents.common.*
|
|
import solutions.bitbadger.documents.java.*
|
|
import solutions.bitbadger.documents.java.extensions.customScalar
|
|
import solutions.bitbadger.documents.java.extensions.ensureTable
|
|
import solutions.bitbadger.documents.java.integration.TEST_TABLE
|
|
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
|
|
import solutions.bitbadger.documents.java.jvm.DocumentConfig
|
|
import solutions.bitbadger.documents.java.jvm.Results
|
|
import java.io.File
|
|
|
|
/**
|
|
* A wrapper for a throwaway SQLite database
|
|
*/
|
|
class SQLiteDB : ThrowawayDatabase {
|
|
|
|
private var dbName = ""
|
|
|
|
init {
|
|
DocumentConfig.serializer = JacksonDocumentSerializer()
|
|
dbName = "test-db-${AutoId.generateRandomString(8)}.db"
|
|
Configuration.connectionString = "jdbc:sqlite:$dbName"
|
|
}
|
|
|
|
override val conn = Configuration.dbConn()
|
|
|
|
init {
|
|
conn.ensureTable(TEST_TABLE)
|
|
}
|
|
|
|
override fun close() {
|
|
conn.close()
|
|
File(dbName).delete()
|
|
}
|
|
|
|
override fun dbObjectExists(name: String) =
|
|
conn.customScalar("SELECT EXISTS (SELECT 1 FROM sqlite_master WHERE name = :name) AS it",
|
|
listOf(Parameter(":name", ParameterType.STRING, name)), Boolean::class.java, Results::toExists)
|
|
}
|