diff --git a/src/__tests__/pg/_pg.test.ts b/src/__tests__/pg/_pg.test.ts index 777ffaf..faeb691 100644 --- a/src/__tests__/pg/_pg.test.ts +++ b/src/__tests__/pg/_pg.test.ts @@ -29,7 +29,7 @@ import { } from 'drizzle-orm/pg-core'; import { compareContents } from '../utils'; import { pgGenerate } from '~/generators'; -import { relations } from 'drizzle-orm'; +import { relations, sql } from 'drizzle-orm'; const pathPrefix = './src/__tests__/pg/'; @@ -162,7 +162,8 @@ async function indexesTest() { index1: index('key_4').on(tbl.f3.desc()), index2: index('key_5').on(tbl.f3, tbl.f4), index3: index('key_6').on(tbl.f1.nullsFirst().desc()), - index4: index().on(tbl.f4) + index4: index().on(tbl.f4), + index5: index('key_7').using('btree', tbl.f1.asc(), sql`lower(${tbl.f2})`) }) ); diff --git a/src/__tests__/pg/indexes.dbml b/src/__tests__/pg/indexes.dbml index ce14779..2ae8bee 100644 --- a/src/__tests__/pg/indexes.dbml +++ b/src/__tests__/pg/indexes.dbml @@ -13,5 +13,6 @@ table table { (f3, f4) [name: 'key_5'] f1 [name: 'key_6'] f4 + (f1, f2) [name: 'key_7'] } } \ No newline at end of file diff --git a/src/generators/common.ts b/src/generators/common.ts index 49b69cc..2f5f01f 100644 --- a/src/generators/common.ts +++ b/src/generators/common.ts @@ -9,7 +9,8 @@ import { getTableColumns, is, isTable, - Table + Table, + Column } from 'drizzle-orm'; import { AnyInlineForeignKeys, @@ -173,8 +174,12 @@ export abstract class BaseGenerator< dbml.tab(2); if (is(index, PgIndex) || is(index, MySqlIndex) || is(index, SQLiteIndex)) { + const configColumns = index.config.columns.flatMap((entry) => + is(entry, SQL) ? entry.queryChunks.filter((v) => is(v, Column)) : entry + ); + const idxColumns = wrapColumns( - index.config.columns as AnyColumn[], + configColumns as AnyColumn[], this.buildQueryConfig.escapeName ); const idxProperties = index.config.name