import { type Configuration, type Dictionary, type EntityMetadata } from '@mikro-orm/core'; import { DatabaseTable } from './DatabaseTable.js'; import type { AbstractSqlConnection } from '../AbstractSqlConnection.js'; import type { DatabaseView } from '../typings.js'; import type { AbstractSqlPlatform } from '../AbstractSqlPlatform.js'; /** * @internal */ export declare class DatabaseSchema { #private; readonly name: string; constructor(platform: AbstractSqlPlatform, name: string); addTable(name: string, schema: string | undefined | null, comment?: string): DatabaseTable; getTables(): DatabaseTable[]; /** @internal */ setTables(tables: DatabaseTable[]): void; /** @internal */ setNamespaces(namespaces: Set): void; getTable(name: string): DatabaseTable | undefined; hasTable(name: string): boolean; addView( name: string, schema: string | undefined | null, definition: string, materialized?: boolean, withData?: boolean, ): DatabaseView; getViews(): DatabaseView[]; /** @internal */ setViews(views: DatabaseView[]): void; getView(name: string): DatabaseView | undefined; hasView(name: string): boolean; setNativeEnums( nativeEnums: Dictionary<{ name: string; schema?: string; items: string[]; }>, ): void; getNativeEnums(): Dictionary<{ name: string; schema?: string; items: string[]; }>; getNativeEnum(name: string): { name: string; schema?: string; items: string[]; }; hasNamespace(namespace: string): boolean; hasNativeEnum(name: string): boolean; getNamespaces(): string[]; static create( connection: AbstractSqlConnection, platform: AbstractSqlPlatform, config: Configuration, schemaName?: string, schemas?: string[], takeTables?: (string | RegExp)[], skipTables?: (string | RegExp)[], skipViews?: (string | RegExp)[], ): Promise; static fromMetadata( metadata: EntityMetadata[], platform: AbstractSqlPlatform, config: Configuration, schemaName?: string, em?: any, ): DatabaseSchema; private static getViewDefinition; private static getSchemaName; /** * Add a foreign key from a TPT child entity's PK to its parent entity's PK. * This FK uses ON DELETE CASCADE to ensure child rows are deleted when parent is deleted. */ private static addTPTForeignKey; private static matchName; private static isNameAllowed; private static isTableNameAllowed; private static shouldHaveColumn; toJSON(): Dictionary; prune(schema: string | undefined, wildcardSchemaTables: string[]): void; }