import { EntityMetadata } from "./EntityMetadata"; import { IndexMetadataArgs } from "../metadata-args/IndexMetadataArgs"; import { NamingStrategyInterface } from "../naming-strategy/NamingStrategyInterface"; import { ColumnMetadata } from "./ColumnMetadata"; import { EmbeddedMetadata } from "./EmbeddedMetadata"; /** * Index metadata contains all information about table's index. */ export declare class IndexMetadata { /** * Entity metadata of the class to which this index is applied. */ entityMetadata: EntityMetadata; /** * Embedded metadata if this index was applied on embedded. */ embeddedMetadata?: EmbeddedMetadata; /** * Indicates if this index must be unique. */ isUnique: boolean; /** * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values. * Works only in MySQL. */ isSpatial: boolean; /** * The FULLTEXT modifier indexes the entire column and does not allow prefixing. * Works only in MySQL. */ isFulltext: boolean; /** * Indicates if this index must synchronize with database index. */ synchronize: boolean; /** * If true, the index only references documents with the specified field. * These indexes use less space but behave differently in some situations (particularly sorts). * This option is only supported for mongodb database. */ isSparse?: boolean; /** * Builds the index in the background so that building an index an does not block other database activities. * This option is only supported for mongodb database. */ isBackground?: boolean; /** * Specifies a time to live, in seconds. * This option is only supported for mongodb database. */ expireAfterSeconds?: number; /** * Target class to which metadata is applied. */ target?: Function | string; /** * Indexed columns. */ columns: ColumnMetadata[]; /** * User specified index name. */ givenName?: string; /** * User specified column names. */ givenColumnNames?: ((object?: any) => (any[] | { [key: string]: number; })) | string[]; /** * Final index name. * If index name was given by a user then it stores normalized (by naming strategy) givenName. * If index name was not given then its generated. */ name: string; /** * Index filter condition. */ where?: string; /** * Map of column names with order set. * Used only by MongoDB driver. */ columnNamesWithOrderingMap: { [key: string]: number; }; constructor(options: { entityMetadata: EntityMetadata; embeddedMetadata?: EmbeddedMetadata; columns?: ColumnMetadata[]; args?: IndexMetadataArgs; }); /** * Builds some depend index properties. * Must be called after all entity metadata's properties map, columns and relations are built. */ build(namingStrategy: NamingStrategyInterface): this; }