import type { BuildColumns, BuildExtraConfigColumns } 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 PgColumnsBuilders } from './columns/all.js'; import type { ExtraConfigColumn, PgColumn, PgColumnBuilderBase } from './columns/common.js'; import type { ForeignKey, ForeignKeyBuilder } from './foreign-keys.js'; import type { AnyIndexBuilder } from './indexes.js'; import type { PgPolicy } from './policies.js'; import type { PrimaryKeyBuilder } from './primary-keys.js'; import type { UniqueConstraintBuilder } from './unique-constraint.js'; export type PgTableExtraConfigValue = AnyIndexBuilder | CheckBuilder | ForeignKeyBuilder | PrimaryKeyBuilder | UniqueConstraintBuilder | PgPolicy; export type PgTableExtraConfig = Record; export type TableConfig = TableConfigBase; /** @internal */ export declare const InlineForeignKeys: unique symbol; /** @internal */ export declare const EnableRLS: unique symbol; export declare class PgTable extends Table { static readonly [entityKind]: string; /** @internal */ static readonly Symbol: { Name: typeof import("../table.utils.js").TableName; Schema: typeof import("../table.js").Schema; OriginalName: typeof import("../table.js").OriginalName; Columns: typeof import("../table.js").Columns; ExtraConfigColumns: typeof import("../table.js").ExtraConfigColumns; BaseName: typeof import("../table.js").BaseName; IsAlias: typeof import("../table.js").IsAlias; ExtraConfigBuilder: typeof import("../table.js").ExtraConfigBuilder; } & { InlineForeignKeys: typeof InlineForeignKeys; EnableRLS: typeof EnableRLS; }; /**@internal */ [InlineForeignKeys]: ForeignKey[]; /** @internal */ [EnableRLS]: boolean; /** @internal */ [Table.Symbol.ExtraConfigBuilder]: ((self: Record) => PgTableExtraConfig) | undefined; /** @internal */ [Table.Symbol.ExtraConfigColumns]: Record; } export type AnyPgTable = {}> = PgTable>; export type PgTableWithColumns = PgTable & { [Key in keyof T['columns']]: T['columns'][Key]; } & { enableRLS: () => Omit, 'enableRLS'>; }; /** @internal */ export declare function pgTableWithSchema>(name: TTableName, columns: TColumnsMap | ((columnTypes: PgColumnsBuilders) => TColumnsMap), extraConfig: ((self: BuildExtraConfigColumns) => PgTableExtraConfig | PgTableExtraConfigValue[]) | undefined, schema: TSchemaName, baseName?: TTableName): PgTableWithColumns<{ name: TTableName; schema: TSchemaName; columns: BuildColumns; dialect: 'pg'; }>; export interface PgTableFn { >(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns) => PgTableExtraConfigValue[]): PgTableWithColumns<{ name: TTableName; schema: TSchema; columns: BuildColumns; dialect: 'pg'; }>; >(name: TTableName, columns: (columnTypes: PgColumnsBuilders) => TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns) => PgTableExtraConfigValue[]): PgTableWithColumns<{ name: TTableName; schema: TSchema; columns: BuildColumns; dialect: 'pg'; }>; /** * @deprecated The third parameter of pgTable is changing and will only accept an array instead of an object * * @example * Deprecated version: * ```ts * export const users = pgTable("users", { * id: integer(), * }, (t) => ({ * idx: index('custom_name').on(t.id) * })); * ``` * * New API: * ```ts * export const users = pgTable("users", { * id: integer(), * }, (t) => [ * index('custom_name').on(t.id) * ]); * ``` */ >(name: TTableName, columns: TColumnsMap, extraConfig: (self: BuildExtraConfigColumns) => PgTableExtraConfig): PgTableWithColumns<{ name: TTableName; schema: TSchema; columns: BuildColumns; dialect: 'pg'; }>; /** * @deprecated The third parameter of pgTable is changing and will only accept an array instead of an object * * @example * Deprecated version: * ```ts * export const users = pgTable("users", { * id: integer(), * }, (t) => ({ * idx: index('custom_name').on(t.id) * })); * ``` * * New API: * ```ts * export const users = pgTable("users", { * id: integer(), * }, (t) => [ * index('custom_name').on(t.id) * ]); * ``` */ >(name: TTableName, columns: (columnTypes: PgColumnsBuilders) => TColumnsMap, extraConfig: (self: BuildExtraConfigColumns) => PgTableExtraConfig): PgTableWithColumns<{ name: TTableName; schema: TSchema; columns: BuildColumns; dialect: 'pg'; }>; } export declare const pgTable: PgTableFn; export declare function pgTableCreator(customizeTableName: (name: string) => string): PgTableFn; //# sourceMappingURL=table.d.ts.map