Move ITs to common files, call from both DBs
- Fix PostgreSQL auto-number syntax
This commit is contained in:
@@ -20,19 +20,25 @@ object Document {
|
||||
val query = if (strategy == AutoId.DISABLED) {
|
||||
Document.insert(tableName)
|
||||
} else {
|
||||
val idField = Configuration.idField
|
||||
val dialect = Configuration.dialect("Create auto-ID insert query")
|
||||
val idField = Configuration.idField
|
||||
val dialect = Configuration.dialect("Create auto-ID insert query")
|
||||
val dataParam = if (AutoId.needsAutoId(strategy, document, idField)) {
|
||||
when (strategy) {
|
||||
AutoId.NUMBER -> "(SELECT coalesce(max(data->>'$idField'), 0) + 1 FROM $tableName)"
|
||||
AutoId.UUID -> "'${AutoId.generateUUID()}'"
|
||||
AutoId.RANDOM_STRING -> "'${AutoId.generateRandomString()}'"
|
||||
else -> "(:data)->>'$idField'"
|
||||
}.let {
|
||||
when (dialect) {
|
||||
Dialect.POSTGRESQL -> ":data::jsonb || ('{\"$idField\":$it}')::jsonb"
|
||||
Dialect.SQLITE -> "json_set(:data, '$.$idField', $it)"
|
||||
}
|
||||
when (dialect) {
|
||||
Dialect.POSTGRESQL ->
|
||||
when (strategy) {
|
||||
AutoId.NUMBER -> "' || (SELECT coalesce(max(data->>'$idField')::numeric, 0) + 1 FROM $tableName) || '"
|
||||
AutoId.UUID -> "\"${AutoId.generateUUID()}\""
|
||||
AutoId.RANDOM_STRING -> "\"${AutoId.generateRandomString()}\""
|
||||
else -> "\"' || (:data)->>'$idField' || '\""
|
||||
}.let { ":data::jsonb || ('{\"$idField\":$it}')::jsonb" }
|
||||
|
||||
Dialect.SQLITE ->
|
||||
when (strategy) {
|
||||
AutoId.NUMBER -> "(SELECT coalesce(max(data->>'$idField'), 0) + 1 FROM $tableName)"
|
||||
AutoId.UUID -> "'${AutoId.generateUUID()}'"
|
||||
AutoId.RANDOM_STRING -> "'${AutoId.generateRandomString()}'"
|
||||
else -> "(:data)->>'$idField'"
|
||||
}.let { "json_set(:data, '$.$idField', $it)" }
|
||||
}
|
||||
} else {
|
||||
":data"
|
||||
|
||||
Reference in New Issue
Block a user