How can we define a case-insensitive unique varcha...
# exposed
f
How can we define a case-insensitive unique varchar field in a table? Thanks
o
As far as I know in Postgres there is a type
citext
for it. Which database you use?
For me works the follogin variant:
Copy code
class CitextColumnType : TextColumnType() {
    override fun sqlType() = "citext"
}

fun Table.citext(name: String): Column<String> =
    registerColumn(name, CitextColumnType())

@Test
    fun testTest() {
        val tester = object : IntIdTable("test-citext") {
            val text = citext("text").uniqueIndex()
        }

        withDb {
            addLogger(StdOutSqlLogger)
            exec("CREATE EXTENSION IF NOT EXISTS citext;")
            SchemaUtils.drop(tester)
            SchemaUtils.create(tester)

            tester.insert { it[text] = "abc" }
            assertFails {
                tester.insert { it[text] = "ABC" }
            }
        }
    }
🙌 1
🙌🏾 1
f
Using Postgres. Will check your code.