utils.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 { IndexBuilder } from "./indexes.js";
  6. import { PrimaryKeyBuilder } from "./primary-keys.js";
  7. import { SingleStoreTable } from "./table.js";
  8. import { UniqueConstraintBuilder } from "./unique-constraint.js";
  9. function extractUsedTable(table) {
  10. if (is(table, SingleStoreTable)) {
  11. return [`${table[Table.Symbol.BaseName]}`];
  12. }
  13. if (is(table, Subquery)) {
  14. return table._.usedTables ?? [];
  15. }
  16. if (is(table, SQL)) {
  17. return table.usedTables ?? [];
  18. }
  19. return [];
  20. }
  21. function getTableConfig(table) {
  22. const columns = Object.values(table[SingleStoreTable.Symbol.Columns]);
  23. const indexes = [];
  24. const primaryKeys = [];
  25. const uniqueConstraints = [];
  26. const name = table[Table.Symbol.Name];
  27. const schema = table[Table.Symbol.Schema];
  28. const baseName = table[Table.Symbol.BaseName];
  29. const extraConfigBuilder = table[SingleStoreTable.Symbol.ExtraConfigBuilder];
  30. if (extraConfigBuilder !== void 0) {
  31. const extraConfig = extraConfigBuilder(table[SingleStoreTable.Symbol.Columns]);
  32. const extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) : Object.values(extraConfig);
  33. for (const builder of Object.values(extraValues)) {
  34. if (is(builder, IndexBuilder)) {
  35. indexes.push(builder.build(table));
  36. } else if (is(builder, UniqueConstraintBuilder)) {
  37. uniqueConstraints.push(builder.build(table));
  38. } else if (is(builder, PrimaryKeyBuilder)) {
  39. primaryKeys.push(builder.build(table));
  40. }
  41. }
  42. }
  43. return {
  44. columns,
  45. indexes,
  46. primaryKeys,
  47. uniqueConstraints,
  48. name,
  49. schema,
  50. baseName
  51. };
  52. }
  53. export {
  54. extractUsedTable,
  55. getTableConfig
  56. };
  57. //# sourceMappingURL=utils.js.map