333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/schema-builder/table/TableIndex.ts"],"names":[],"mappings":";AAGA;;GAEG;AACH;IAsCI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,oBAAY,OAA0B;QA/BtC;;WAEG;QACH,gBAAW,GAAa,EAAE,CAAC;QA6BvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,0BAAK,GAAL;QACI,OAAO,IAAI,UAAU,CAAoB;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,mBAAM,IAAI,CAAC,WAAW,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACI,iBAAM,GAAb,UAAc,aAA4B;QACtC,OAAO,IAAI,UAAU,CAAoB;YACrC,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC;YACrE,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,KAAK,EAAE,aAAa,CAAC,KAAK;SAC7B,CAAC,CAAC;IACP,CAAC;IAEL,iBAAC;AAAD,CAvFA,AAuFC,IAAA","file":"TableIndex.js","sourcesContent":["import {IndexMetadata} from \"../../metadata/IndexMetadata\";\nimport {TableIndexOptions} from \"../options/TableIndexOptions\";\n\n/**\n * Database's table index stored in this class.\n */\nexport class TableIndex {\n\n    // -------------------------------------------------------------------------\n    // Public Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Index name.\n     */\n    name?: string;\n\n    /**\n     * Columns included in this index.\n     */\n    columnNames: string[] = [];\n\n    /**\n     * Indicates if this index is unique.\n     */\n    isUnique: boolean;\n\n    /**\n     * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n     * Works only in MySQL.\n     */\n    isSpatial: boolean;\n\n    /**\n     * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n     * Works only in MySQL.\n     */\n    isFulltext: boolean;\n\n    /**\n     * Index filter condition.\n     */\n    where: string;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(options: TableIndexOptions) {\n        this.name = options.name;\n        this.columnNames = options.columnNames;\n        this.isUnique = !!options.isUnique;\n        this.isSpatial = !!options.isSpatial;\n        this.isFulltext = !!options.isFulltext;\n        this.where = options.where ? options.where : \"\";\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates a new copy of this index with exactly same properties.\n     */\n    clone(): TableIndex {\n        return new TableIndex(<TableIndexOptions>{\n            name: this.name,\n            columnNames: [...this.columnNames],\n            isUnique: this.isUnique,\n            isSpatial: this.isSpatial,\n            isFulltext: this.isFulltext,\n            where: this.where\n        });\n    }\n\n    // -------------------------------------------------------------------------\n    // Static Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates index from the index metadata object.\n     */\n    static create(indexMetadata: IndexMetadata): TableIndex {\n        return new TableIndex(<TableIndexOptions>{\n            name: indexMetadata.name,\n            columnNames: indexMetadata.columns.map(column => column.databaseName),\n            isUnique: indexMetadata.isUnique,\n            isSpatial: indexMetadata.isSpatial,\n            isFulltext: indexMetadata.isFulltext,\n            where: indexMetadata.where\n        });\n    }\n\n}\n"],"sourceRoot":"../.."}