{"version":3,"sources":["../../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":"../.."}
|