table.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { entityKind } from "../entity.js";
  2. import { Table } from "../table.js";
  3. import { getMySqlColumnBuilders } from "./columns/all.js";
  4. const InlineForeignKeys = Symbol.for("drizzle:MySqlInlineForeignKeys");
  5. class MySqlTable extends Table {
  6. static [entityKind] = "MySqlTable";
  7. /** @internal */
  8. static Symbol = Object.assign({}, Table.Symbol, {
  9. InlineForeignKeys
  10. });
  11. /** @internal */
  12. [Table.Symbol.Columns];
  13. /** @internal */
  14. [InlineForeignKeys] = [];
  15. /** @internal */
  16. [Table.Symbol.ExtraConfigBuilder] = void 0;
  17. }
  18. function mysqlTableWithSchema(name, columns, extraConfig, schema, baseName = name) {
  19. const rawTable = new MySqlTable(name, schema, baseName);
  20. const parsedColumns = typeof columns === "function" ? columns(getMySqlColumnBuilders()) : columns;
  21. const builtColumns = Object.fromEntries(
  22. Object.entries(parsedColumns).map(([name2, colBuilderBase]) => {
  23. const colBuilder = colBuilderBase;
  24. colBuilder.setName(name2);
  25. const column = colBuilder.build(rawTable);
  26. rawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));
  27. return [name2, column];
  28. })
  29. );
  30. const table = Object.assign(rawTable, builtColumns);
  31. table[Table.Symbol.Columns] = builtColumns;
  32. table[Table.Symbol.ExtraConfigColumns] = builtColumns;
  33. if (extraConfig) {
  34. table[MySqlTable.Symbol.ExtraConfigBuilder] = extraConfig;
  35. }
  36. return table;
  37. }
  38. const mysqlTable = (name, columns, extraConfig) => {
  39. return mysqlTableWithSchema(name, columns, extraConfig, void 0, name);
  40. };
  41. function mysqlTableCreator(customizeTableName) {
  42. return (name, columns, extraConfig) => {
  43. return mysqlTableWithSchema(customizeTableName(name), columns, extraConfig, void 0, name);
  44. };
  45. }
  46. export {
  47. InlineForeignKeys,
  48. MySqlTable,
  49. mysqlTable,
  50. mysqlTableCreator,
  51. mysqlTableWithSchema
  52. };
  53. //# sourceMappingURL=table.js.map