Remove update object by deserialize

This commit is contained in:
2021-07-14 20:18:45 +02:00
parent 8a848fd3dc
commit 4ff30e1201
4 changed files with 3 additions and 31 deletions

View File

@@ -55,19 +55,12 @@ class Connection(
values: List<Any?>,
block: (QueryResult, R?) -> Unit
): R? {
val primaryObject = values.firstOrNull {
it is EntityI && typeReference.type.typeName == it::class.java.name
} as R?
val result = exec(sql, compileArgs(values))
val json = result.rows.firstOrNull()?.getString(0)
return if (json === null) {
null
} else {
if (primaryObject != null) {
serializer.deserialize(json, primaryObject)
} else {
serializer.deserialize(json, typeReference)
}
serializer.deserialize(json, typeReference)
}.also {
block(result, it)
}

View File

@@ -42,13 +42,8 @@ class Serializer(val mapper: ObjectMapper = jacksonObjectMapper()) {
inline fun <reified E> deserializeList(json: String): E {
return deserializeList(json, object : TypeReference<E>() {})
}
fun <E> deserialize(json: String, target: E): E {
return mapper.readerForUpdating(target).readValue<E>(json)
}
}
fun Serializable.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty)
fun List<Serializable>.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty)
inline fun <reified E : Serializable> E.deserialize(json: String) = Serializer().deserialize(json, this)
inline fun <reified E : Serializable> String.deserialize() = Serializer().deserialize<E>(this)