{"version":3,"file":"indexes.cjs","names":["entityKind"],"sources":["../../src/sqlite-core/indexes.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { SQLiteColumn } from './columns/index.ts';\nimport type { SQLiteTable } from './table.ts';\n\nexport interface IndexConfig {\n\tname: string;\n\tcolumns: IndexColumn[];\n\tunique: boolean;\n\twhere: SQL | undefined;\n}\n\nexport type IndexColumn = SQLiteColumn | SQL;\n\nexport class IndexBuilderOn {\n\tstatic readonly [entityKind]: string = 'SQLiteIndexBuilderOn';\n\n\tconstructor(private name: string, private unique: boolean) {}\n\n\ton(...columns: [IndexColumn, ...IndexColumn[]]): IndexBuilder {\n\t\treturn new IndexBuilder(this.name, columns, this.unique);\n\t}\n}\n\nexport class IndexBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteIndexBuilder';\n\n\tdeclare _: {\n\t\tbrand: 'SQLiteIndexBuilder';\n\t};\n\n\t/** @internal */\n\tconfig: IndexConfig;\n\n\tconstructor(name: string, columns: IndexColumn[], unique: boolean) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tcolumns,\n\t\t\tunique,\n\t\t\twhere: undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Condition for partial index.\n\t */\n\twhere(condition: SQL): this {\n\t\tthis.config.where = condition;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): Index {\n\t\treturn new Index(this.config, table);\n\t}\n}\n\nexport class Index {\n\tstatic readonly [entityKind]: string = 'SQLiteIndex';\n\n\tdeclare _: {\n\t\tbrand: 'SQLiteIndex';\n\t};\n\n\treadonly config: IndexConfig & { table: SQLiteTable };\n\treadonly isNameExplicit: boolean;\n\n\tconstructor(config: IndexConfig, table: SQLiteTable) {\n\t\tthis.config = { ...config, table };\n\t\tthis.isNameExplicit = !!config.name;\n\t}\n}\n\nexport function index(name: string): IndexBuilderOn {\n\treturn new IndexBuilderOn(name, false);\n}\n\nexport function uniqueIndex(name: string): IndexBuilderOn {\n\treturn new IndexBuilderOn(name, true);\n}\n"],"mappings":";;;;;AAcA,IAAa,iBAAb,MAA4B;CAC3B,QAAiBA,0BAAsB;CAEvC,YAAY,AAAQ,MAAc,AAAQ,QAAiB;EAAvC;EAAsB;;CAE1C,GAAG,GAAG,SAAwD;AAC7D,SAAO,IAAI,aAAa,KAAK,MAAM,SAAS,KAAK,OAAO;;;AAI1D,IAAa,eAAb,MAA0B;CACzB,QAAiBA,0BAAsB;;CAOvC;CAEA,YAAY,MAAc,SAAwB,QAAiB;AAClE,OAAK,SAAS;GACb;GACA;GACA;GACA,OAAO;GACP;;;;;CAMF,MAAM,WAAsB;AAC3B,OAAK,OAAO,QAAQ;AACpB,SAAO;;;CAIR,MAAM,OAA2B;AAChC,SAAO,IAAI,MAAM,KAAK,QAAQ,MAAM;;;AAItC,IAAa,QAAb,MAAmB;CAClB,QAAiBA,0BAAsB;CAMvC,AAAS;CACT,AAAS;CAET,YAAY,QAAqB,OAAoB;AACpD,OAAK,SAAS;GAAE,GAAG;GAAQ;GAAO;AAClC,OAAK,iBAAiB,CAAC,CAAC,OAAO;;;AAIjC,SAAgB,MAAM,MAA8B;AACnD,QAAO,IAAI,eAAe,MAAM,MAAM;;AAGvC,SAAgB,YAAY,MAA8B;AACzD,QAAO,IAAI,eAAe,MAAM,KAAK"}