AK-21/Graphite-Industrial-Intelligence
0
1import { entityKind } from "../entity.js";2import { TableName } from "../table.utils.js";3function uniqueKeyName(table, columns) {4 return `${table[TableName]}_${columns.join("_")}_unique`;5}6function unique(name) {7 return new UniqueOnConstraintBuilder(name);8}9class UniqueConstraintBuilder {10 constructor(columns, name) {11 this.name = name;12 this.columns = columns;13 }14 static [entityKind] = "SQLiteUniqueConstraintBuilder";15 /** @internal */16 columns;17 /** @internal */18 build(table) {19 return new UniqueConstraint(table, this.columns, this.name);20 }21}22class UniqueOnConstraintBuilder {23 static [entityKind] = "SQLiteUniqueOnConstraintBuilder";24 /** @internal */25 name;26 constructor(name) {27 this.name = name;28 }29 on(...columns) {30 return new UniqueConstraintBuilder(columns, this.name);31 }32}33class UniqueConstraint {34 constructor(table, columns, name) {35 this.table = table;36 this.columns = columns;37 this.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));38 }39 static [entityKind] = "SQLiteUniqueConstraint";40 columns;41 name;42 getName() {43 return this.name;44 }45}46export {47 UniqueConstraint,48 UniqueConstraintBuilder,49 UniqueOnConstraintBuilder,50 unique,51 uniqueKeyName52};53//# sourceMappingURL=unique-constraint.js.map