unique-constraint.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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] = "PgUniqueConstraintBuilder";
  15. /** @internal */
  16. columns;
  17. /** @internal */
  18. nullsNotDistinctConfig = false;
  19. nullsNotDistinct() {
  20. this.nullsNotDistinctConfig = true;
  21. return this;
  22. }
  23. /** @internal */
  24. build(table) {
  25. return new UniqueConstraint(table, this.columns, this.nullsNotDistinctConfig, this.name);
  26. }
  27. }
  28. class UniqueOnConstraintBuilder {
  29. static [entityKind] = "PgUniqueOnConstraintBuilder";
  30. /** @internal */
  31. name;
  32. constructor(name) {
  33. this.name = name;
  34. }
  35. on(...columns) {
  36. return new UniqueConstraintBuilder(columns, this.name);
  37. }
  38. }
  39. class UniqueConstraint {
  40. constructor(table, columns, nullsNotDistinct, name) {
  41. this.table = table;
  42. this.columns = columns;
  43. this.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));
  44. this.nullsNotDistinct = nullsNotDistinct;
  45. }
  46. static [entityKind] = "PgUniqueConstraint";
  47. columns;
  48. name;
  49. nullsNotDistinct = false;
  50. getName() {
  51. return this.name;
  52. }
  53. }
  54. export {
  55. UniqueConstraint,
  56. UniqueConstraintBuilder,
  57. UniqueOnConstraintBuilder,
  58. unique,
  59. uniqueKeyName
  60. };
  61. //# sourceMappingURL=unique-constraint.js.map