table.d.cts 5.1 KB

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