https://kotlinlang.org logo
#exposed
Title
# exposed
ł

Łukasz Bednarczyk

09/30/2021, 12:22 PM
Do you know when implementation of JSON column will be available?
e

Emil Kantis

09/30/2021, 12:49 PM
You can use this for now, if you want:
Copy code
class JsonStore<T : Comparable<T>, S>(
   private val json: Json,
   private val serializer: KSerializer<S>,
   private val column: Column<String>,
) {

   operator fun getValue(thisRef: Entity<T>, property: KProperty<*>): S =
      json.decodeFromString(serializer, with(thisRef) { column.lookup() })

   operator fun setValue(thisRef: Entity<T>, property: KProperty<*>, value: S) =
      with(thisRef) { column.setValue(this, property, json.encodeToString(serializer, value)) }
}

inline fun <T : Comparable<T>, reified S> jsonStore(column: Column<String>, json: Json = Json.Default) = JsonStore<T, S>(
   json,
   serializer(),
   column,
)
Example usage: (from Dao Entity):
Copy code
var tags: List<String> by jsonStore(Clients.tags)
ł

Łukasz Bednarczyk

09/30/2021, 12:57 PM
Ok, I will test it
thanks
👍 1
16 Views