utils.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { is } from "../entity.js";
  2. import { SQL } from "../sql/sql.js";
  3. import { Subquery } from "../subquery.js";
  4. import { Table } from "../table.js";
  5. import { ViewBaseConfig } from "../view-common.js";
  6. import { CheckBuilder } from "./checks.js";
  7. import { ForeignKeyBuilder } from "./foreign-keys.js";
  8. import { IndexBuilder } from "./indexes.js";
  9. import { GelPolicy } from "./policies.js";
  10. import { PrimaryKeyBuilder } from "./primary-keys.js";
  11. import { GelTable } from "./table.js";
  12. import { UniqueConstraintBuilder } from "./unique-constraint.js";
  13. import { GelViewConfig } from "./view-common.js";
  14. import { GelMaterializedViewConfig } from "./view.js";
  15. function getTableConfig(table) {
  16. const columns = Object.values(table[Table.Symbol.Columns]);
  17. const indexes = [];
  18. const checks = [];
  19. const primaryKeys = [];
  20. const foreignKeys = Object.values(table[GelTable.Symbol.InlineForeignKeys]);
  21. const uniqueConstraints = [];
  22. const name = table[Table.Symbol.Name];
  23. const schema = table[Table.Symbol.Schema];
  24. const policies = [];
  25. const enableRLS = table[GelTable.Symbol.EnableRLS];
  26. const extraConfigBuilder = table[GelTable.Symbol.ExtraConfigBuilder];
  27. if (extraConfigBuilder !== void 0) {
  28. const extraConfig = extraConfigBuilder(table[Table.Symbol.ExtraConfigColumns]);
  29. const extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) : Object.values(extraConfig);
  30. for (const builder of extraValues) {
  31. if (is(builder, IndexBuilder)) {
  32. indexes.push(builder.build(table));
  33. } else if (is(builder, CheckBuilder)) {
  34. checks.push(builder.build(table));
  35. } else if (is(builder, UniqueConstraintBuilder)) {
  36. uniqueConstraints.push(builder.build(table));
  37. } else if (is(builder, PrimaryKeyBuilder)) {
  38. primaryKeys.push(builder.build(table));
  39. } else if (is(builder, ForeignKeyBuilder)) {
  40. foreignKeys.push(builder.build(table));
  41. } else if (is(builder, GelPolicy)) {
  42. policies.push(builder);
  43. }
  44. }
  45. }
  46. return {
  47. columns,
  48. indexes,
  49. foreignKeys,
  50. checks,
  51. primaryKeys,
  52. uniqueConstraints,
  53. name,
  54. schema,
  55. policies,
  56. enableRLS
  57. };
  58. }
  59. function extractUsedTable(table) {
  60. if (is(table, GelTable)) {
  61. return [`${table[Table.Symbol.BaseName]}`];
  62. }
  63. if (is(table, Subquery)) {
  64. return table._.usedTables ?? [];
  65. }
  66. if (is(table, SQL)) {
  67. return table.usedTables ?? [];
  68. }
  69. return [];
  70. }
  71. function getViewConfig(view) {
  72. return {
  73. ...view[ViewBaseConfig],
  74. ...view[GelViewConfig]
  75. };
  76. }
  77. function getMaterializedViewConfig(view) {
  78. return {
  79. ...view[ViewBaseConfig],
  80. ...view[GelMaterializedViewConfig]
  81. };
  82. }
  83. export {
  84. extractUsedTable,
  85. getMaterializedViewConfig,
  86. getTableConfig,
  87. getViewConfig
  88. };
  89. //# sourceMappingURL=utils.js.map