import PgPromise from 'pg-promise'; import _ from 'lodash'; import Options from './options'; import { ColumnDefinition, TableDefinition, ForeignKey } from './schemaInterfaces'; export declare function pgTypeToTsType(column: ColumnDefinition, customTypes: string[], options: Options): string; interface Metadata { schema: string; enumTypes: Record; foreignKeys: { [tableName: string]: { [columnName: string]: ForeignKey; }; }; tableToKeys: { [tableName: string]: string; }; columnComments: { [tableName: string]: { [columnName: string]: string; }; }; tableComments: { [tableName: string]: string; }; } export declare class PostgresDatabase { db: PgPromise.IDatabase; metadata: Metadata | null; connectionString: string; constructor(connectionString: string); static mapTableDefinitionToType(tableDefinition: TableDefinition, customTypes: string[], options: Options): TableDefinition; query(queryString: string): Promise; /** Call this if you know the DB has changed underneath you, e.g. in a test. */ reset(): void; getEnumTypes(schema?: string): Promise>; getTableDefinition(tableName: string, tableSchema: string): Promise; getTableTypes(tableName: string, tableSchema: string, options: Options): Promise; getSchemaTables(schemaName: string): Promise; getPrimaryKeys(schemaName: string): Promise<{ [x: string]: string; }>; getColumnComments(schemaName: string): Promise<{ [x: string]: _.Dictionary; }>; getTableComments(schemaName: string): Promise<_.Dictionary>; getForeignKeys(schemaName: string): Promise<{ [x: string]: _.Dictionary<{ table: string; column: string; }>; }>; getMeta(schemaName: string): Promise; getDefaultSchema(): string; } export {};