333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/schema-builder/table/Table.ts"],"names":[],"mappings":"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","file":"Table.js","sourcesContent":["import {TableColumn} from \"./TableColumn\";\nimport {TableIndex} from \"./TableIndex\";\nimport {TableForeignKey} from \"./TableForeignKey\";\nimport {Driver} from \"../../driver/Driver\";\nimport {TableOptions} from \"../options/TableOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {TableUtils} from \"../util/TableUtils\";\nimport {TableUnique} from \"./TableUnique\";\nimport {TableCheck} from \"./TableCheck\";\nimport {TableExclusion} from \"./TableExclusion\";\n\n/**\n * Table in the database represented in this class.\n */\nexport class Table {\n\n    // -------------------------------------------------------------------------\n    // Public Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Contains database name, schema name and table name.\n     * E.g. \"myDB\".\"mySchema\".\"myTable\"\n     */\n    name: string;\n\n    /**\n     * Table columns.\n     */\n    columns: TableColumn[] = [];\n\n    /**\n     * Table indices.\n     */\n    indices: TableIndex[] = [];\n\n    /**\n     * Table foreign keys.\n     */\n    foreignKeys: TableForeignKey[] = [];\n\n    /**\n     * Table unique constraints.\n     */\n    uniques: TableUnique[] = [];\n\n    /**\n     * Table check constraints.\n     */\n    checks: TableCheck[] = [];\n\n    /**\n     * Table exclusion constraints.\n     */\n    exclusions: TableExclusion[] = [];\n\n    /**\n     * Indicates if table was just created.\n     * This is needed, for example to check if we need to skip primary keys creation\n     * for new tables.\n     */\n    justCreated: boolean = false;\n\n    /**\n     * Table engine.\n     */\n    engine?: string;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(options?: TableOptions) {\n        if (options) {\n            this.name = options.name;\n\n            if (options.columns)\n                this.columns = options.columns.map(column => new TableColumn(column));\n\n            if (options.indices)\n                this.indices = options.indices.map(index => new TableIndex(index));\n\n            if (options.foreignKeys)\n                this.foreignKeys = options.foreignKeys.map(foreignKey => new TableForeignKey(foreignKey));\n\n            if (options.uniques)\n                this.uniques = options.uniques.map(unique => new TableUnique(unique));\n\n            if (options.checks)\n                this.checks = options.checks.map(check => new TableCheck(check));\n\n            if (options.exclusions)\n                this.exclusions = options.exclusions.map(exclusion => new TableExclusion(exclusion));\n\n            if (options.justCreated !== undefined)\n                this.justCreated = options.justCreated;\n\n            this.engine = options.engine;\n        }\n    }\n\n    // -------------------------------------------------------------------------\n    // Accessors\n    // -------------------------------------------------------------------------\n\n    get primaryColumns(): TableColumn[] {\n        return this.columns.filter(column => column.isPrimary);\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Clones this table to a new table with all properties cloned.\n     */\n    clone(): Table {\n        return new Table(<TableOptions>{\n            name: this.name,\n            columns: this.columns.map(column => column.clone()),\n            indices: this.indices.map(constraint => constraint.clone()),\n            foreignKeys: this.foreignKeys.map(constraint => constraint.clone()),\n            uniques: this.uniques.map(constraint => constraint.clone()),\n            checks: this.checks.map(constraint => constraint.clone()),\n            exclusions: this.exclusions.map(constraint => constraint.clone()),\n            justCreated: this.justCreated,\n            engine: this.engine,\n        });\n    }\n\n    /**\n     * Add column and creates its constraints.\n     */\n    addColumn(column: TableColumn): void {\n        this.columns.push(column);\n    }\n\n    /**\n     * Remove column and its constraints.\n     */\n    removeColumn(column: TableColumn): void {\n        const foundColumn = this.columns.find(c => c.name === column.name);\n        if (foundColumn)\n            this.columns.splice(this.columns.indexOf(foundColumn), 1);\n    }\n\n    /**\n     * Adds unique constraint.\n     */\n    addUniqueConstraint(uniqueConstraint: TableUnique): void {\n        this.uniques.push(uniqueConstraint);\n        if (uniqueConstraint.columnNames.length === 1) {\n            const uniqueColumn = this.columns.find(column => column.name === uniqueConstraint.columnNames[0]);\n            if (uniqueColumn)\n                uniqueColumn.isUnique = true;\n        }\n    }\n\n    /**\n     * Removes unique constraint.\n     */\n    removeUniqueConstraint(removedUnique: TableUnique): void {\n        const foundUnique = this.uniques.find(unique => unique.name === removedUnique.name);\n        if (foundUnique) {\n            this.uniques.splice(this.uniques.indexOf(foundUnique), 1);\n            if (foundUnique.columnNames.length === 1) {\n                const uniqueColumn = this.columns.find(column => column.name === foundUnique.columnNames[0]);\n                if (uniqueColumn)\n                    uniqueColumn.isUnique = false;\n            }\n        }\n    }\n\n    /**\n     * Adds check constraint.\n     */\n    addCheckConstraint(checkConstraint: TableCheck): void {\n        this.checks.push(checkConstraint);\n    }\n\n    /**\n     * Removes check constraint.\n     */\n    removeCheckConstraint(removedCheck: TableCheck): void {\n        const foundCheck = this.checks.find(check => check.name === removedCheck.name);\n        if (foundCheck) {\n            this.checks.splice(this.checks.indexOf(foundCheck), 1);\n        }\n    }\n\n    /**\n     * Adds exclusion constraint.\n     */\n    addExclusionConstraint(exclusionConstraint: TableExclusion): void {\n        this.exclusions.push(exclusionConstraint);\n    }\n\n    /**\n     * Removes exclusion constraint.\n     */\n    removeExclusionConstraint(removedExclusion: TableExclusion): void {\n        const foundExclusion = this.exclusions.find(exclusion => exclusion.name === removedExclusion.name);\n        if (foundExclusion) {\n            this.exclusions.splice(this.exclusions.indexOf(foundExclusion), 1);\n        }\n    }\n\n    /**\n     * Adds foreign keys.\n     */\n    addForeignKey(foreignKey: TableForeignKey): void {\n        this.foreignKeys.push(foreignKey);\n    }\n\n    /**\n     * Removes foreign key.\n     */\n    removeForeignKey(removedForeignKey: TableForeignKey): void {\n        const fk = this.foreignKeys.find(foreignKey => foreignKey.name === removedForeignKey.name);\n        if (fk)\n            this.foreignKeys.splice(this.foreignKeys.indexOf(fk), 1);\n    }\n\n    /**\n     * Adds index.\n     */\n    addIndex(index: TableIndex, isMysql: boolean = false): void {\n        this.indices.push(index);\n\n        // in Mysql unique indices and unique constraints are the same thing\n        // if index is unique and have only one column, we mark this column as unique\n        if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n            const column = this.columns.find(c => c.name === index.columnNames[0]);\n            if (column)\n                column.isUnique = true;\n        }\n    }\n\n    /**\n     * Removes index.\n     */\n    removeIndex(tableIndex: TableIndex, isMysql: boolean = false): void {\n        const index = this.indices.find(index => index.name === tableIndex.name);\n        if (index) {\n            this.indices.splice(this.indices.indexOf(index), 1);\n\n            // in Mysql unique indices and unique constraints are the same thing\n            // if index is unique and have only one column, we move `unique` attribute from its column\n            if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n                const column = this.columns.find(c => c.name === index.columnNames[0]);\n                if (column)\n                    column.isUnique = this.indices.some(ind => ind.columnNames.length === 1 && ind.columnNames[0] === column.name && !!index.isUnique);\n            }\n        }\n    }\n\n    findColumnByName(name: string): TableColumn|undefined {\n        return this.columns.find(column => column.name === name);\n    }\n\n    /**\n     * Returns all column indices.\n     */\n    findColumnIndices(column: TableColumn): TableIndex[] {\n        return this.indices.filter(index => {\n           return !!index.columnNames.find(columnName => columnName === column.name);\n        });\n    }\n\n    /**\n     * Returns all column foreign keys.\n     */\n    findColumnForeignKeys(column: TableColumn): TableForeignKey[] {\n        return this.foreignKeys.filter(foreignKey => {\n            return !!foreignKey.columnNames.find(columnName => columnName === column.name);\n        });\n    }\n\n    /**\n     * Returns all column uniques.\n     */\n    findColumnUniques(column: TableColumn): TableUnique[] {\n        return this.uniques.filter(unique => {\n            return !!unique.columnNames.find(columnName => columnName === column.name);\n        });\n    }\n\n    /**\n     * Returns all column checks.\n     */\n    findColumnChecks(column: TableColumn): TableCheck[] {\n        return this.checks.filter(check => {\n            return !!check.columnNames!.find(columnName => columnName === column.name);\n        });\n    }\n\n    // -------------------------------------------------------------------------\n    // Static Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates table from a given entity metadata.\n     */\n    static create(entityMetadata: EntityMetadata, driver: Driver): Table {\n        const options: TableOptions = {\n            name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database),\n            engine: entityMetadata.engine,\n            columns: entityMetadata.columns\n                .filter(column => column)\n                .map(column => TableUtils.createTableColumnOptions(column, driver)),\n            indices: entityMetadata.indices\n                .filter(index => index.synchronize === true)\n                .map(index => TableIndex.create(index)),\n            uniques: entityMetadata.uniques.map(unique => TableUnique.create(unique)),\n            checks: entityMetadata.checks.map(check => TableCheck.create(check)),\n            exclusions: entityMetadata.exclusions.map(exclusion => TableExclusion.create(exclusion)),\n        };\n\n        return new Table(options);\n    }\n\n}\n"],"sourceRoot":"../.."}