package org.antop.board.common.exposed import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import org.jetbrains.exposed.sql.Column import org.jetbrains.exposed.sql.ColumnType import org.jetbrains.exposed.sql.Table /** * Set ↔︎ JSON 타입 매핑 (내부는 []) */ class JsonArrayColumnType : ColumnType>() { override fun sqlType(): String = "longtext" override fun valueFromDB(value: Any): Set = when (value) { is String -> Json.decodeFromString>(value) else -> setOf() } override fun notNullValueToDB(value: Set): Any = nonNullValueToString(value) override fun nonNullValueToString(value: Set): String = Json.encodeToString(value) } fun Table.jsonArray(name: String): Column> = registerColumn(name, JsonArrayColumnType())