{"version":3,"file":"unique-constraint.cjs","names":["TableName","entityKind"],"sources":["../../src/mysql-core/unique-constraint.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TableName } from '~/table.utils.ts';\nimport type { MySqlColumn } from './columns/index.ts';\nimport type { MySqlTable } from './table.ts';\n\nexport function unique<TName extends string | undefined = undefined>(name?: TName): UniqueOnConstraintBuilder<TName> {\n\treturn new UniqueOnConstraintBuilder<TName>(name);\n}\n\nexport function uniqueKeyName(table: MySqlTable, columns: string[]) {\n\treturn `${table[TableName]}_${columns.join('_')}_unique`;\n}\n\nexport class UniqueConstraintBuilder<TName extends string | undefined = undefined> {\n\tstatic readonly [entityKind]: string = 'MySqlUniqueConstraintBuilder';\n\n\t/** @internal */\n\tcolumns: MySqlColumn[];\n\t/** @internal */\n\tname?: TName;\n\n\tconstructor(\n\t\tcolumns: MySqlColumn[],\n\t\tname?: TName,\n\t) {\n\t\tthis.columns = columns;\n\t\tthis.name = name;\n\t}\n\n\t/** @internal */\n\tbuild(table: MySqlTable): UniqueConstraint {\n\t\treturn new UniqueConstraint(table, this.columns, this.name);\n\t}\n}\n\nexport class UniqueOnConstraintBuilder<TName extends string | undefined = undefined> {\n\tstatic readonly [entityKind]: string = 'MySqlUniqueOnConstraintBuilder';\n\n\t/** @internal */\n\tname?: TName;\n\n\tconstructor(\n\t\tname?: TName,\n\t) {\n\t\tthis.name = name;\n\t}\n\n\ton(...columns: [MySqlColumn, ...MySqlColumn[]]) {\n\t\treturn new UniqueConstraintBuilder<TName>(columns, this.name);\n\t}\n}\n\nexport class UniqueConstraint {\n\tstatic readonly [entityKind]: string = 'MySqlUniqueConstraint';\n\n\treadonly columns: MySqlColumn[];\n\treadonly name: string;\n\treadonly isNameExplicit: boolean;\n\treadonly nullsNotDistinct: boolean = false;\n\n\tconstructor(readonly table: MySqlTable, columns: MySqlColumn[], 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,OAAqD,MAAgD;AACpH,QAAO,IAAI,0BAAiC,KAAK;;AAGlD,SAAgB,cAAc,OAAmB,SAAmB;AACnE,QAAO,GAAG,MAAMA,4BAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;;AAGjD,IAAa,0BAAb,MAAmF;CAClF,QAAiBC,0BAAsB;;CAGvC;;CAEA;CAEA,YACC,SACA,MACC;AACD,OAAK,UAAU;AACf,OAAK,OAAO;;;CAIb,MAAM,OAAqC;AAC1C,SAAO,IAAI,iBAAiB,OAAO,KAAK,SAAS,KAAK,KAAK;;;AAI7D,IAAa,4BAAb,MAAqF;CACpF,QAAiBA,0BAAsB;;CAGvC;CAEA,YACC,MACC;AACD,OAAK,OAAO;;CAGb,GAAG,GAAG,SAA0C;AAC/C,SAAO,IAAI,wBAA+B,SAAS,KAAK,KAAK;;;AAI/D,IAAa,mBAAb,MAA8B;CAC7B,QAAiBA,0BAAsB;CAEvC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS,mBAA4B;CAErC,YAAY,AAAS,OAAmB,SAAwB,MAAe;EAA1D;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"}