import { O_CREATE_TABLE_CREATE_DEFINITION, O_CREATE_TABLE_CREATE_DEFINITION_FOREIGN_KEY, ForeignKeyInterface } from '../../../../typings'; import { ForeignKeyModelInterface, IndexColumnModelInterface, ColumnReferenceModelInterface, ColumnModelInterface, TableModelInterface } from './typings'; /** * Foreign key of a table. */ export declare class ForeignKey implements ForeignKeyModelInterface { name?: string; columns: IndexColumnModelInterface[]; reference: ColumnReferenceModelInterface; /** * Creates a foreign key from a JSON def. * * @param json JSON format parsed from SQL. */ static fromDef(json: O_CREATE_TABLE_CREATE_DEFINITION): ForeignKey; /** * Creates a foreign key from an object containing needed properties. * * @param json Object containing properties. */ static fromObject(json: O_CREATE_TABLE_CREATE_DEFINITION_FOREIGN_KEY): ForeignKey; /** * JSON casting of this object calls this method. */ toJSON(): ForeignKeyInterface; /** * Create a deep clone of this model. */ clone(): ForeignKey; /** * Push an index column to columns array. * * @param indexColumn Index column to be pushed. */ pushColumn(indexColumn: IndexColumnModelInterface): void; /** * Drops an index column, returning a boolean to whether column was removed. * * @param name Column name to be dropped. */ dropColumn(name: string): boolean; /** * Get the columns in given table which this foreign key's index columns refer to. * * @param table Table in question. */ getColumnsFromTable(table: TableModelInterface): ColumnModelInterface[]; /** * Get whether the given table has all of this foreign key's owner table columns. */ hasAllColumnsFromTable(table: TableModelInterface): boolean; /** * Set size of this index to the size of index's column in given * table, if the size of this index is not already set. */ setIndexSizeFromTable(table: TableModelInterface): void; /** * Get whether the given table has all of this foreign key's referenced table columns. */ hasAllColumnsFromRefTable(table: TableModelInterface): boolean; /** * Get referenced table by this foreign key, from array * of given tables. Returns null if no table was found. * * @param tables Table array to search. */ getReferencedTable(tables: TableModelInterface[]): TableModelInterface | undefined; /** * Checks and returns whether this foreign key references given table and column. * * @param table Table to be checked whether there is reference to. * @param column Column to be checked in given table. */ referencesTableAndColumn(table: TableModelInterface, column: ColumnModelInterface): boolean; /** * Checks and returns whether this foreign key references given table. * * @param table Table to be checked whether there is reference to. */ referencesTable(table: TableModelInterface): boolean; /** * Rename index column name. * * @param column Column being renamed. * @param newName New column name. */ renameColumn(column: ColumnModelInterface, newName: string): void; /** * Update referenced table name. * * @param newName New table name. */ updateReferencedTableName(newName: string): void; }