import { GetColumnData } from 'drizzle-orm'; import { OptionalKeyOnly, RequiredKeyOnly } from 'drizzle-orm/operations'; import { Table } from 'drizzle-orm/table'; import { Update } from 'drizzle-orm/utils'; import { Simplify } from 'drizzle-orm/utils'; import { CheckBuilder } from './checks'; import { AnyPgColumn, AnyPgColumnBuilder, BuildColumns } from './columns/common'; import { ForeignKeyBuilder } from './foreign-keys'; import { AnyIndexBuilder } from './indexes'; export declare type PgTableExtraConfig = Record; export interface TableConfig { name: TName; columns: Record>; } export declare type UpdateTableConfig> = Update; export declare class PgTable> extends Table { protected $columns: T['columns']; } export declare type AnyPgTable = {}> = PgTable>; export declare type PgTableWithColumns = PgTable & { [Key in keyof T['columns']]: T['columns'][Key]; }; /** * See `GetColumnConfig`. */ export declare type GetTableConfig = T extends PgTableWithColumns ? TParam extends undefined ? TConfig : TParam extends keyof TConfig ? TConfig[TParam] : TConfig : never; export declare type InferModel = TInferMode extends 'insert' ? Simplify<{ [Key in keyof GetTableConfig & string as RequiredKeyOnly[Key]>]: GetColumnData[Key], 'query'>; } & { [Key in keyof GetTableConfig & string as OptionalKeyOnly[Key]>]?: GetColumnData[Key], 'query'>; }> : { [Key in keyof GetTableConfig]: GetColumnData[Key], 'query'>; }; export interface PgSchema { schemaName: string; } export declare function isPgSchema(obj: unknown): obj is PgSchema; export declare function pgSchema(schemaName: T extends 'public' ? "You can't specify 'public' as schema name. Postgres is using public schema by default. If you want to use 'public' schema, just type pgTable() instead of creating own schema" : T): (>>(name: TTableName, columns: TColumnsMap, extraConfig?: ((self: Simplify<{ [Key in keyof TColumnsMap]: import("./columns/common").BuildColumn; }, {}>) => PgTableExtraConfig) | undefined) => PgTableWithColumns<{ name: TTableName; columns: Simplify<{ [Key in keyof TColumnsMap]: import("./columns/common").BuildColumn; }, {}>; }>) & PgSchema; export declare function pgTable>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildColumns) => PgTableExtraConfig): PgTableWithColumns<{ name: TTableName; columns: BuildColumns; }>; //# sourceMappingURL=table.d.ts.map