unique-constraint.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { entityKind } from "../entity.js";
  2. import { TableName } from "../table.utils.js";
  3. function uniqueKeyName(table, columns) {
  4. return `${table[TableName]}_${columns.join("_")}_unique`;
  5. }
  6. function unique(name) {
  7. return new UniqueOnConstraintBuilder(name);
  8. }
  9. class 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. }
  22. class 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. }
  33. class 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. }
  46. export {
  47. UniqueConstraint,
  48. UniqueConstraintBuilder,
  49. UniqueOnConstraintBuilder,
  50. unique,
  51. uniqueKeyName
  52. };
  53. //# sourceMappingURL=unique-constraint.js.map