utils.js 2.6 KB

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