table.d.cts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import type { BuildColumns } from "../column-builder.cjs";
  2. import { entityKind } from "../entity.cjs";
  3. import { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from "../table.cjs";
  4. import type { CheckBuilder } from "./checks.cjs";
  5. import { type MySqlColumnBuilders } from "./columns/all.cjs";
  6. import type { MySqlColumn, MySqlColumnBuilderBase } from "./columns/common.cjs";
  7. import type { ForeignKeyBuilder } from "./foreign-keys.cjs";
  8. import type { AnyIndexBuilder } from "./indexes.cjs";
  9. import type { PrimaryKeyBuilder } from "./primary-keys.cjs";
  10. import type { UniqueConstraintBuilder } from "./unique-constraint.cjs";
  11. export type MySqlTableExtraConfigValue = AnyIndexBuilder | CheckBuilder | ForeignKeyBuilder | PrimaryKeyBuilder | UniqueConstraintBuilder;
  12. export type MySqlTableExtraConfig = Record<string, MySqlTableExtraConfigValue>;
  13. export type TableConfig = TableConfigBase<MySqlColumn>;
  14. export declare class MySqlTable<T extends TableConfig = TableConfig> extends Table<T> {
  15. static readonly [entityKind]: string;
  16. protected $columns: T['columns'];
  17. }
  18. export type AnyMySqlTable<TPartial extends Partial<TableConfig> = {}> = MySqlTable<UpdateTableConfig<TableConfig, TPartial>>;
  19. export type MySqlTableWithColumns<T extends TableConfig> = MySqlTable<T> & {
  20. [Key in keyof T['columns']]: T['columns'][Key];
  21. };
  22. export declare function mysqlTableWithSchema<TTableName extends string, TSchemaName extends string | undefined, TColumnsMap extends Record<string, MySqlColumnBuilderBase>>(name: TTableName, columns: TColumnsMap | ((columnTypes: MySqlColumnBuilders) => TColumnsMap), extraConfig: ((self: BuildColumns<TTableName, TColumnsMap, 'mysql'>) => MySqlTableExtraConfig | MySqlTableExtraConfigValue[]) | undefined, schema: TSchemaName, baseName?: TTableName): MySqlTableWithColumns<{
  23. name: TTableName;
  24. schema: TSchemaName;
  25. columns: BuildColumns<TTableName, TColumnsMap, 'mysql'>;
  26. dialect: 'mysql';
  27. }>;
  28. export interface MySqlTableFn<TSchemaName extends string | undefined = undefined> {
  29. <TTableName extends string, TColumnsMap extends Record<string, MySqlColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'mysql'>) => MySqlTableExtraConfigValue[]): MySqlTableWithColumns<{
  30. name: TTableName;
  31. schema: TSchemaName;
  32. columns: BuildColumns<TTableName, TColumnsMap, 'mysql'>;
  33. dialect: 'mysql';
  34. }>;
  35. <TTableName extends string, TColumnsMap extends Record<string, MySqlColumnBuilderBase>>(name: TTableName, columns: (columnTypes: MySqlColumnBuilders) => TColumnsMap, extraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'mysql'>) => MySqlTableExtraConfigValue[]): MySqlTableWithColumns<{
  36. name: TTableName;
  37. schema: TSchemaName;
  38. columns: BuildColumns<TTableName, TColumnsMap, 'mysql'>;
  39. dialect: 'mysql';
  40. }>;
  41. /**
  42. * @deprecated The third parameter of mysqlTable is changing and will only accept an array instead of an object
  43. *
  44. * @example
  45. * Deprecated version:
  46. * ```ts
  47. * export const users = mysqlTable("users", {
  48. * id: int(),
  49. * }, (t) => ({
  50. * idx: index('custom_name').on(t.id)
  51. * }));
  52. * ```
  53. *
  54. * New API:
  55. * ```ts
  56. * export const users = mysqlTable("users", {
  57. * id: int(),
  58. * }, (t) => [
  59. * index('custom_name').on(t.id)
  60. * ]);
  61. * ```
  62. */
  63. <TTableName extends string, TColumnsMap extends Record<string, MySqlColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig: (self: BuildColumns<TTableName, TColumnsMap, 'mysql'>) => MySqlTableExtraConfig): MySqlTableWithColumns<{
  64. name: TTableName;
  65. schema: TSchemaName;
  66. columns: BuildColumns<TTableName, TColumnsMap, 'mysql'>;
  67. dialect: 'mysql';
  68. }>;
  69. /**
  70. * @deprecated The third parameter of mysqlTable is changing and will only accept an array instead of an object
  71. *
  72. * @example
  73. * Deprecated version:
  74. * ```ts
  75. * export const users = mysqlTable("users", {
  76. * id: int(),
  77. * }, (t) => ({
  78. * idx: index('custom_name').on(t.id)
  79. * }));
  80. * ```
  81. *
  82. * New API:
  83. * ```ts
  84. * export const users = mysqlTable("users", {
  85. * id: int(),
  86. * }, (t) => [
  87. * index('custom_name').on(t.id)
  88. * ]);
  89. * ```
  90. */
  91. <TTableName extends string, TColumnsMap extends Record<string, MySqlColumnBuilderBase>>(name: TTableName, columns: (columnTypes: MySqlColumnBuilders) => TColumnsMap, extraConfig: (self: BuildColumns<TTableName, TColumnsMap, 'mysql'>) => MySqlTableExtraConfig): MySqlTableWithColumns<{
  92. name: TTableName;
  93. schema: TSchemaName;
  94. columns: BuildColumns<TTableName, TColumnsMap, 'mysql'>;
  95. dialect: 'mysql';
  96. }>;
  97. }
  98. export declare const mysqlTable: MySqlTableFn;
  99. export declare function mysqlTableCreator(customizeTableName: (name: string) => string): MySqlTableFn;