{"version":3,"file":"unique-constraint.cjs","names":["TableName","entityKind"],"sources":["../../src/sqlite-core/unique-constraint.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TableName } from '~/table.utils.ts';\nimport type { SQLiteColumn } from './columns/common.ts';\nimport type { SQLiteTable } from './table.ts';\n\nexport function uniqueKeyName(table: SQLiteTable, columns: string[]) {\n\treturn `${table[TableName]}_${columns.join('_')}_unique`;\n}\n\nexport function unique(name?: string): UniqueOnConstraintBuilder {\n\treturn new UniqueOnConstraintBuilder(name);\n}\n\nexport class UniqueConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueConstraintBuilder';\n\n\t/** @internal */\n\tcolumns: SQLiteColumn[];\n\n\tconstructor(\n\t\tcolumns: SQLiteColumn[],\n\t\tprivate name?: string,\n\t) {\n\t\tthis.columns = columns;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): UniqueConstraint {\n\t\treturn new UniqueConstraint(table, this.columns, this.name);\n\t}\n}\n\nexport class UniqueOnConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueOnConstraintBuilder';\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tname?: string,\n\t) {\n\t\tthis.name = name;\n\t}\n\n\ton(...columns: [SQLiteColumn, ...SQLiteColumn[]]) {\n\t\treturn new UniqueConstraintBuilder(columns, this.name);\n\t}\n}\n\nexport class UniqueConstraint {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueConstraint';\n\n\treadonly columns: SQLiteColumn[];\n\treadonly name: string;\n\treadonly isNameExplicit: boolean;\n\n\tconstructor(readonly table: SQLiteTable, columns: SQLiteColumn[], name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.isNameExplicit = !!name;\n\t\tthis.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n\t}\n\n\tgetName() {\n\t\treturn this.name;\n\t}\n}\n"],"mappings":";;;;;;AAKA,SAAgB,cAAc,OAAoB,SAAmB;AACpE,QAAO,GAAG,MAAMA,4BAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;;AAGjD,SAAgB,OAAO,MAA0C;AAChE,QAAO,IAAI,0BAA0B,KAAK;;AAG3C,IAAa,0BAAb,MAAqC;CACpC,QAAiBC,0BAAsB;;CAGvC;CAEA,YACC,SACA,AAAQ,MACP;EADO;AAER,OAAK,UAAU;;;CAIhB,MAAM,OAAsC;AAC3C,SAAO,IAAI,iBAAiB,OAAO,KAAK,SAAS,KAAK,KAAK;;;AAI7D,IAAa,4BAAb,MAAuC;CACtC,QAAiBA,0BAAsB;;CAGvC;CAEA,YACC,MACC;AACD,OAAK,OAAO;;CAGb,GAAG,GAAG,SAA4C;AACjD,SAAO,IAAI,wBAAwB,SAAS,KAAK,KAAK;;;AAIxD,IAAa,mBAAb,MAA8B;CAC7B,QAAiBA,0BAAsB;CAEvC,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,AAAS,OAAoB,SAAyB,MAAe;EAA5D;AACpB,OAAK,UAAU;AACf,OAAK,iBAAiB,CAAC,CAAC;AACxB,OAAK,OAAO,QAAQ,cAAc,KAAK,OAAO,KAAK,QAAQ,KAAK,WAAW,OAAO,KAAK,CAAC;;CAGzF,UAAU;AACT,SAAO,KAAK"}