In exposed At least for mySQL, wouldn't something...
# exposed
m
In exposed At least for mySQL, wouldn't something like this make sense?
Copy code
fun <T:Enum<T>> Table.stringEnumeration(name: String, klass: Class<T>) : Column<T> = registerColumn(name, StringEnumerationColumnType(klass))
class StringEnumerationColumnType<T:Enum<T>>(val klass: Class<T>): ColumnType() {
    override fun sqlType(): String  = "VARCHAR(255)"

    override fun notNullValueToDB(value: Any): Any {
        return when (value) {
            is Enum<*> -> "'${value.name.toLowerCase()}'"
            else -> error("$value is not valid for varchar enum ${klass.name}")
        }
    }

    @Suppress("UNCHECKED_CAST")
    override fun valueFromDB(value: Any): Any {
        return klass.enumConstants!!.first { it.name.toLowerCase() == (value as String).removeSurrounding("'") }
    }
}