import { Literal } from "../../utils/createTransformer.js"; import { IfNotExistsOption, Name, Value } from "../generalTypes.js"; import { SequenceOptions } from "../sequences/shared.js"; import { MigrationOptions } from "../../migrationOptions.js"; //#region src/operations/tables/shared.d.ts type Action = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT'; interface ReferencesOptions { referencesConstraintName?: string; referencesConstraintComment?: string; references: Name; onDelete?: Action; onUpdate?: Action; match?: 'FULL' | 'SIMPLE'; } type SequenceGeneratedOptions = { precedence: 'ALWAYS' | 'BY DEFAULT'; } & SequenceOptions; interface ColumnDefinition extends Partial { type: string; array?: boolean | number; collation?: string; unique?: boolean; primaryKey?: boolean; notNull?: boolean; default?: Value; check?: string; deferrable?: boolean; deferred?: boolean; comment?: string | null; sequenceGenerated?: SequenceGeneratedOptions; expressionGenerated?: string; } interface ColumnDefinitions { [name: string]: ColumnDefinition | string; } type Like = 'COMMENTS' | 'CONSTRAINTS' | 'DEFAULTS' | 'IDENTITY' | 'INDEXES' | 'STATISTICS' | 'STORAGE' | 'ALL'; interface LikeOptions { including?: Like | Like[]; excluding?: Like | Like[]; } interface ForeignKeyOptions extends ReferencesOptions { columns: Name | Name[]; } interface ConstraintOptions { check?: string | string[]; unique?: Name | Array; primaryKey?: Name | Name[]; foreignKeys?: ForeignKeyOptions | ForeignKeyOptions[]; exclude?: string; deferrable?: boolean; deferred?: boolean; comment?: string; } type PartitionStrategy = 'RANGE' | 'LIST' | 'HASH'; interface PartitionColumnOptions { name: string; collate?: string; opclass?: string; } interface PartitionOptions { strategy: PartitionStrategy; columns: Array | string | PartitionColumnOptions; } interface TableOptions extends IfNotExistsOption { temporary?: boolean; inherits?: Name; like?: Name | { table: Name; options?: LikeOptions; }; constraints?: ConstraintOptions; comment?: string | null; partition?: PartitionOptions; unlogged?: boolean; } declare function parseReferences(options: ReferencesOptions, literal: Literal): string; declare function parseDeferrable(options: { deferred?: boolean; }): string; declare function parseColumns(tableName: Name, columns: ColumnDefinitions, mOptions: MigrationOptions): { columns: string[]; constraints: ConstraintOptions; comments: string[]; }; declare function parseConstraints(table: Name, options: ConstraintOptions, optionName: string | null, literal: Literal): { constraints: string[]; comments: string[]; }; declare function parseLike(like: Name | { table: Name; options?: LikeOptions; }, literal: Literal): string; //#endregion export { Action, ColumnDefinition, ColumnDefinitions, ConstraintOptions, ForeignKeyOptions, Like, LikeOptions, PartitionColumnOptions, PartitionOptions, PartitionStrategy, ReferencesOptions, SequenceGeneratedOptions, TableOptions, parseColumns, parseConstraints, parseDeferrable, parseLike, parseReferences };