fun generateExposedTableMulticolumnIndexes()

in exposed-gradle-plugin/plugin-build/exposed-code-generator/src/main/kotlin/org/jetbrains/exposed/gradle/builders/TableBuilder.kt [117:142]


    fun generateExposedTableMulticolumnIndexes() {
        val indexes = tableInfo.table.indexes.filter { it.columns.size > 1 || it.indexType !in listOf(IndexType.other, IndexType.unknown)}
        if (indexes.isEmpty()) {
            return
        }

        builder.addInitializerBlock(buildCodeBlock {
            for (index in indexes) {
                if (tableInfo.primaryKeyColumns.containsAll(index.columns) && tableInfo.primaryKeyColumns.size == index.columns.size) {
                    continue
                }
                val name = getIndexName(index)
                val columns = index.columns.map {
                    data.columnToPropertySpec[it]?.name
                            ?: throw ReferencedColumnNotFoundException("Column ${it.fullName} definition not generated, can't create index.")
                }
                val indexType = indexTypeName[index.indexType]
                val indexTypeString = if (indexType != null) ", indexType = \"$indexType\"" else ""
                if (index.isUnique) {
                    addStatement("%M(%S, ${columns.joinToString(", ")}$indexTypeString)", MemberName("", "uniqueIndex"), name)
                } else {
                    addStatement("%M(%S, false, ${columns.joinToString(", ")}$indexTypeString)", MemberName("", "index"), name)
                }
            }
        })
    }