unique-constraint.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { entityKind } from "../entity.js";
  2. import { TableName } from "../table.utils.js";
  3. function unique(name) {
  4. return new UniqueOnConstraintBuilder(name);
  5. }
  6. function uniqueKeyName(table, columns) {
  7. return `${table[TableName]}_${columns.join("_")}_unique`;
  8. }
  9. class UniqueConstraintBuilder {
  10. constructor(columns, name) {
  11. this.name = name;
  12. this.columns = columns;
  13. }
  14. static [entityKind] = "MySqlUniqueConstraintBuilder";
  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] = "MySqlUniqueOnConstraintBuilder";
  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] = "MySqlUniqueConstraint";
  40. columns;
  41. name;
  42. nullsNotDistinct = false;
  43. getName() {
  44. return this.name;
  45. }
  46. }
  47. export {
  48. UniqueConstraint,
  49. UniqueConstraintBuilder,
  50. UniqueOnConstraintBuilder,
  51. unique,
  52. uniqueKeyName
  53. };
  54. //# sourceMappingURL=unique-constraint.js.map