import type { BuildColumns } from "../column-builder.js"; import { entityKind } from "../entity.js"; import { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from "../table.js"; import type { CheckBuilder } from "./checks.js"; import { type MySqlColumnBuilders } from "./columns/all.js"; import type { MySqlColumn, MySqlColumnBuilderBase } from "./columns/common.js"; import type { ForeignKeyBuilder } from "./foreign-keys.js"; import type { AnyIndexBuilder } from "./indexes.js"; import type { PrimaryKeyBuilder } from "./primary-keys.js"; import type { UniqueConstraintBuilder } from "./unique-constraint.js"; export type MySqlTableExtraConfigValue = AnyIndexBuilder | CheckBuilder | ForeignKeyBuilder | PrimaryKeyBuilder | UniqueConstraintBuilder; export type MySqlTableExtraConfig = Record; export type TableConfig = TableConfigBase; export declare class MySqlTable extends Table { static readonly [entityKind]: string; protected $columns: T['columns']; } export type AnyMySqlTable = {}> = MySqlTable>; export type MySqlTableWithColumns = MySqlTable & { [Key in keyof T['columns']]: T['columns'][Key]; }; export declare function mysqlTableWithSchema>(name: TTableName, columns: TColumnsMap | ((columnTypes: MySqlColumnBuilders) => TColumnsMap), extraConfig: ((self: BuildColumns) => MySqlTableExtraConfig | MySqlTableExtraConfigValue[]) | undefined, schema: TSchemaName, baseName?: TTableName): MySqlTableWithColumns<{ name: TTableName; schema: TSchemaName; columns: BuildColumns; dialect: 'mysql'; }>; export interface MySqlTableFn { /** * @deprecated The third parameter of mysqlTable is changing and will only accept an array instead of an object * * @example * Deprecated version: * ```ts * export const users = mysqlTable("users", { * id: int(), * }, (t) => ({ * idx: index('custom_name').on(t.id) * })); * ``` * * New API: * ```ts * export const users = mysqlTable("users", { * id: int(), * }, (t) => [ * index('custom_name').on(t.id) * ]); * ``` */ >(name: TTableName, columns: TColumnsMap, extraConfig: (self: BuildColumns) => MySqlTableExtraConfig): MySqlTableWithColumns<{ name: TTableName; schema: TSchemaName; columns: BuildColumns; dialect: 'mysql'; }>; /** * @deprecated The third parameter of mysqlTable is changing and will only accept an array instead of an object * * @example * Deprecated version: * ```ts * export const users = mysqlTable("users", { * id: int(), * }, (t) => ({ * idx: index('custom_name').on(t.id) * })); * ``` * * New API: * ```ts * export const users = mysqlTable("users", { * id: int(), * }, (t) => [ * index('custom_name').on(t.id) * ]); * ``` */ >(name: TTableName, columns: (columnTypes: MySqlColumnBuilders) => TColumnsMap, extraConfig: (self: BuildColumns) => MySqlTableExtraConfig): MySqlTableWithColumns<{ name: TTableName; schema: TSchemaName; columns: BuildColumns; dialect: 'mysql'; }>; >(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildColumns) => MySqlTableExtraConfigValue[]): MySqlTableWithColumns<{ name: TTableName; schema: TSchemaName; columns: BuildColumns; dialect: 'mysql'; }>; >(name: TTableName, columns: (columnTypes: MySqlColumnBuilders) => TColumnsMap, extraConfig?: (self: BuildColumns) => MySqlTableExtraConfigValue[]): MySqlTableWithColumns<{ name: TTableName; schema: TSchemaName; columns: BuildColumns; dialect: 'mysql'; }>; } export declare const mysqlTable: MySqlTableFn; export declare function mysqlTableCreator(customizeTableName: (name: string) => string): MySqlTableFn;