mirror of
https://github.com/typeorm/typeorm.git
synced 2025-12-08 21:26:23 +00:00
renamed column name to databaseName and removed name. again broke monogdb files
This commit is contained in:
parent
1ecb949b1e
commit
a7de0586ec
@ -163,12 +163,12 @@ export class PostgresQueryRunner implements QueryRunner {
|
||||
const columns = keys.map(key => this.driver.escapeColumnName(key)).join(", ");
|
||||
const values = keys.map((key, index) => "$" + (index + 1)).join(",");
|
||||
const sql = columns.length > 0
|
||||
? `INSERT INTO ${this.driver.escapeTableName(tableName)}(${columns}) VALUES (${values}) ${ generatedColumn ? " RETURNING " + this.driver.escapeColumnName(generatedColumn.fullName) : "" }`
|
||||
: `INSERT INTO ${this.driver.escapeTableName(tableName)} DEFAULT VALUES ${ generatedColumn ? " RETURNING " + this.driver.escapeColumnName(generatedColumn.fullName) : "" }`;
|
||||
? `INSERT INTO ${this.driver.escapeTableName(tableName)}(${columns}) VALUES (${values}) ${ generatedColumn ? " RETURNING " + this.driver.escapeColumnName(generatedColumn.databaseName) : "" }`
|
||||
: `INSERT INTO ${this.driver.escapeTableName(tableName)} DEFAULT VALUES ${ generatedColumn ? " RETURNING " + this.driver.escapeColumnName(generatedColumn.databaseName) : "" }`;
|
||||
const parameters = keys.map(key => keyValues[key]);
|
||||
const result: ObjectLiteral[] = await this.query(sql, parameters);
|
||||
if (generatedColumn)
|
||||
return result[0][generatedColumn.fullName];
|
||||
return result[0][generatedColumn.databaseName];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -227,11 +227,11 @@ export class SqlServerQueryRunner implements QueryRunner {
|
||||
const parameters = keys.map(key => keyValues[key]);
|
||||
|
||||
const sql = columns.length > 0
|
||||
? `INSERT INTO ${this.driver.escapeTableName(tableName)}(${columns}) ${ generatedColumn ? "OUTPUT INSERTED." + generatedColumn.fullName + " " : "" }VALUES (${values})`
|
||||
: `INSERT INTO ${this.driver.escapeTableName(tableName)} ${ generatedColumn ? "OUTPUT INSERTED." + generatedColumn.fullName + " " : "" }DEFAULT VALUES `;
|
||||
? `INSERT INTO ${this.driver.escapeTableName(tableName)}(${columns}) ${ generatedColumn ? "OUTPUT INSERTED." + generatedColumn.databaseName + " " : "" }VALUES (${values})`
|
||||
: `INSERT INTO ${this.driver.escapeTableName(tableName)} ${ generatedColumn ? "OUTPUT INSERTED." + generatedColumn.databaseName + " " : "" }DEFAULT VALUES `;
|
||||
|
||||
const result = await this.query(sql, parameters);
|
||||
return generatedColumn ? result instanceof Array ? result[0][generatedColumn.fullName] : result[generatedColumn.fullName] : undefined;
|
||||
return generatedColumn ? result instanceof Array ? result[0][generatedColumn.databaseName] : result[generatedColumn.databaseName] : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -49,8 +49,8 @@ export class LazyRelationsWrapper {
|
||||
.innerJoin(relation.entityMetadata.target as Function, relation.entityMetadata.name, conditions);
|
||||
|
||||
joinColumns.forEach(joinColumn => {
|
||||
qb.andWhere(`${relation.entityMetadata.name}.${joinColumn.referencedColumn!.fullName} = :${joinColumn.referencedColumn!.fullName}`)
|
||||
.setParameter(`${joinColumn.referencedColumn!.fullName}`, this[joinColumn.referencedColumn!.fullName]);
|
||||
qb.andWhere(`${relation.entityMetadata.name}.${joinColumn.referencedColumn!.databaseName} = :${joinColumn.referencedColumn!.databaseName}`)
|
||||
.setParameter(`${joinColumn.referencedColumn!.databaseName}`, this[joinColumn.referencedColumn!.databaseName]);
|
||||
});
|
||||
|
||||
this[promiseIndex] = qb.getOne().then(result => {
|
||||
|
||||
@ -191,7 +191,7 @@ export class EntityMetadataBuilder {
|
||||
referencedColumns = relation.inverseEntityMetadata.primaryColumnsWithParentIdColumns;
|
||||
} else { // cases with referenced columns defined
|
||||
referencedColumns = joinColumnArgsArray.map(joinColumnArgs => {
|
||||
const referencedColumn = relation.inverseEntityMetadata.columns.find(column => column.fullName === joinColumnArgs.referencedColumnName);
|
||||
const referencedColumn = relation.inverseEntityMetadata.columns.find(column => column.databaseName === joinColumnArgs.referencedColumnName);
|
||||
if (!referencedColumn)
|
||||
throw new Error(`Referenced column ${joinColumnArgs.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`);
|
||||
|
||||
@ -211,7 +211,7 @@ export class EntityMetadataBuilder {
|
||||
});
|
||||
const joinColumnName = joinColumnMetadataArg ? joinColumnMetadataArg.name : this.namingStrategy.joinColumnName(relation.propertyName, referencedColumn.propertyName);
|
||||
|
||||
let relationalColumn = relation.entityMetadata.columns.find(column => column.fullName === joinColumnName);
|
||||
let relationalColumn = relation.entityMetadata.columns.find(column => column.databaseName === joinColumnName);
|
||||
if (!relationalColumn) {
|
||||
relationalColumn = new ColumnMetadata(entityMetadata, {
|
||||
target: relation.entityMetadata.target,
|
||||
@ -264,7 +264,7 @@ export class EntityMetadataBuilder {
|
||||
referencedColumns = relation.entityMetadata.primaryColumnsWithParentIdColumns;
|
||||
} else {
|
||||
referencedColumns = joinTableMetadataArgs.joinColumns!.map(joinColumn => {
|
||||
const referencedColumn = relation.entityMetadata.columns.find(column => column.fullName === joinColumn.referencedColumnName);
|
||||
const referencedColumn = relation.entityMetadata.columns.find(column => column.databaseName === joinColumn.referencedColumnName);
|
||||
if (!referencedColumn)
|
||||
throw new Error(`Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.entityMetadata.name}`);
|
||||
|
||||
@ -279,7 +279,7 @@ export class EntityMetadataBuilder {
|
||||
inverseReferencedColumns = relation.inverseEntityMetadata.primaryColumnsWithParentIdColumns;
|
||||
} else {
|
||||
inverseReferencedColumns = joinTableMetadataArgs.inverseJoinColumns!.map(joinColumn => {
|
||||
const referencedColumn = relation.inverseEntityMetadata.columns.find(column => column.fullName === joinColumn.referencedColumnName);
|
||||
const referencedColumn = relation.inverseEntityMetadata.columns.find(column => column.databaseName === joinColumn.referencedColumnName);
|
||||
if (!referencedColumn)
|
||||
throw new Error(`Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`);
|
||||
|
||||
@ -293,7 +293,7 @@ export class EntityMetadataBuilder {
|
||||
return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === referencedColumn.propertyName) &&
|
||||
!!joinColumnArgs.name;
|
||||
}) : undefined;
|
||||
const columnName = joinColumn && joinColumn.name ? joinColumn.name : this.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.fullName);
|
||||
const columnName = joinColumn && joinColumn.name ? joinColumn.name : this.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.databaseName);
|
||||
|
||||
return new ColumnMetadata(junctionEntityMetadata, {
|
||||
propertyName: columnName,
|
||||
@ -313,7 +313,7 @@ export class EntityMetadataBuilder {
|
||||
return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === inverseReferencedColumn.propertyName) &&
|
||||
!!joinColumnArgs.name;
|
||||
}) : undefined;
|
||||
const columnName = joinColumn && joinColumn.name ? joinColumn.name : this.namingStrategy.joinTableColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.fullName);
|
||||
const columnName = joinColumn && joinColumn.name ? joinColumn.name : this.namingStrategy.joinTableColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.databaseName);
|
||||
|
||||
return new ColumnMetadata(junctionEntityMetadata, {
|
||||
propertyName: columnName,
|
||||
@ -339,8 +339,8 @@ export class EntityMetadataBuilder {
|
||||
junctionEntityMetadata.ownColumns = junctionColumns.concat(inverseJunctionColumns);
|
||||
junctionEntityMetadata.foreignKeys = foreignKeys;
|
||||
junctionEntityMetadata.indices = [ // todo: shall we remove indices?
|
||||
new IndexMetadata(junctionEntityMetadata, { columns: junctionColumns.map(column => column.fullName), unique: false }),
|
||||
new IndexMetadata(junctionEntityMetadata, { columns: inverseJunctionColumns.map(column => column.fullName), unique: false })
|
||||
new IndexMetadata(junctionEntityMetadata, { columns: junctionColumns.map(column => column.databaseName), unique: false }),
|
||||
new IndexMetadata(junctionEntityMetadata, { columns: inverseJunctionColumns.map(column => column.databaseName), unique: false })
|
||||
];
|
||||
this.createEntityMetadata(junctionEntityMetadata, {
|
||||
tableType: "junction",
|
||||
@ -363,7 +363,7 @@ export class EntityMetadataBuilder {
|
||||
.forEach(metadata => {
|
||||
const indexForKey = new IndexMetadata(metadata, {
|
||||
target: metadata.target,
|
||||
columns: [metadata.discriminatorColumn.fullName],
|
||||
columns: [metadata.discriminatorColumn.databaseName],
|
||||
unique: false
|
||||
});
|
||||
metadata.indices.push(indexForKey);
|
||||
|
||||
@ -215,17 +215,6 @@ export class ColumnMetadata {
|
||||
return this.entityMetadata.target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Column name in the database.
|
||||
*
|
||||
* todo: rename to databaseName
|
||||
* @deprecated
|
||||
*/
|
||||
// name: string;
|
||||
get name(): string {
|
||||
return this.entityMetadata.namingStrategy.columnName(this.propertyName, this._name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets full path to this column property (including column property name).
|
||||
* Full path is relevant when column is used in embeds (one or multiple nested).
|
||||
@ -242,11 +231,9 @@ export class ColumnMetadata {
|
||||
}
|
||||
|
||||
/**
|
||||
* Column name in the database including its embedded prefixes.
|
||||
*
|
||||
* todo: rename to databaseName
|
||||
* Complete column name in the database including its embedded prefixes.
|
||||
*/
|
||||
get fullName(): string {
|
||||
get databaseName(): string {
|
||||
|
||||
// if this column is embedded's column then apply different entity
|
||||
if (this.embeddedMetadata) {
|
||||
|
||||
@ -691,7 +691,7 @@ export class EntityMetadata {
|
||||
if (entityValue === null || entityValue === undefined)
|
||||
return;
|
||||
|
||||
map[column.fullName] = entityValue;
|
||||
map[column.databaseName] = entityValue;
|
||||
// if entity id is a relation, then extract referenced column from that relation
|
||||
/*const columnRelation = this.relations.find(relation => relation.propertyName === column.propertyName);
|
||||
|
||||
@ -786,7 +786,7 @@ export class EntityMetadata {
|
||||
Object.keys(idMap).forEach(propertyName => {
|
||||
const column = this.getColumnByPropertyName(propertyName);
|
||||
if (column) {
|
||||
map[column.fullName] = idMap[propertyName];
|
||||
map[column.databaseName] = idMap[propertyName];
|
||||
}
|
||||
});
|
||||
return map;
|
||||
@ -815,7 +815,7 @@ export class EntityMetadata {
|
||||
* Checks if column with the given database name exist.
|
||||
*/
|
||||
hasColumnWithDbName(name: string): boolean {
|
||||
return !!this.ownColumns.find(column => column.fullName === name);
|
||||
return !!this.ownColumns.find(column => column.databaseName === name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -90,14 +90,14 @@ export class ForeignKeyMetadata {
|
||||
* Gets array of column names.
|
||||
*/
|
||||
get columnNames(): string[] {
|
||||
return this.columns.map(column => column.fullName);
|
||||
return this.columns.map(column => column.databaseName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets array of referenced column names.
|
||||
*/
|
||||
get referencedColumnNames(): string[] {
|
||||
return this.referencedColumns.map(column => column.fullName);
|
||||
return this.referencedColumns.map(column => column.databaseName);
|
||||
}
|
||||
|
||||
}
|
||||
@ -105,7 +105,7 @@ export class IndexMetadata {
|
||||
throw new Error(`Index ${this._name ? "\"" + this._name + "\" " : ""}contains columns that are missing in the entity: ` + missingColumnNames.join(", "));
|
||||
}
|
||||
|
||||
return columns.map(column => column.fullName);
|
||||
return columns.map(column => column.databaseName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -137,7 +137,7 @@ export class IndexMetadata {
|
||||
if (!column)
|
||||
throw new Error(`Index ${this._name ? "\"" + this._name + "\" " : ""}contains columns that are missing in the entity: ${key}`);
|
||||
|
||||
updatedMap[column.name] = map[key];
|
||||
updatedMap[column.databaseName] = map[key];
|
||||
return updatedMap;
|
||||
}, {} as { [key: string]: number });
|
||||
}
|
||||
|
||||
@ -197,16 +197,16 @@ export class RelationMetadata {
|
||||
|
||||
if (this.isOwning) {
|
||||
if (this.isManyToMany) {
|
||||
return this.joinColumns[0].name;
|
||||
return this.joinColumns[0].databaseName;
|
||||
} else if (this.foreignKeys[0] && this.foreignKeys[0].columns) {
|
||||
return this.foreignKeys[0].columns[0].name;
|
||||
return this.foreignKeys[0].columns[0].databaseName;
|
||||
}
|
||||
|
||||
} else if (this.hasInverseSide) {
|
||||
if (this.inverseRelation.isManyToMany) {
|
||||
return this.inverseRelation.inverseJoinColumns[0].name;
|
||||
return this.inverseRelation.inverseJoinColumns[0].databaseName;
|
||||
} else if (this.inverseRelation.foreignKeys[0] && this.inverseRelation.foreignKeys[0].columns && this.inverseRelation.foreignKeys[0].columns[0].referencedColumn!) {
|
||||
return this.inverseRelation.foreignKeys[0].columns[0].referencedColumn!.fullName; // todo: [0] is temporary!!
|
||||
return this.inverseRelation.foreignKeys[0].columns[0].referencedColumn!.databaseName; // todo: [0] is temporary!!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -263,7 +263,7 @@ export class SubjectOperationExecutor {
|
||||
}
|
||||
|
||||
if (relationId) {
|
||||
updateOptions[joinColumn.fullName] = relationId;
|
||||
updateOptions[joinColumn.databaseName] = relationId;
|
||||
}
|
||||
|
||||
});
|
||||
@ -298,19 +298,19 @@ export class SubjectOperationExecutor {
|
||||
}
|
||||
}
|
||||
if (relationIdOfEntityValue) {
|
||||
conditions[column.fullName] = relationIdOfEntityValue;
|
||||
conditions[column.databaseName] = relationIdOfEntityValue;
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
if (entityValue) {
|
||||
conditions[column.fullName] = entityValue;
|
||||
conditions[column.databaseName] = entityValue;
|
||||
} else {
|
||||
if (subject.newlyGeneratedId) {
|
||||
conditions[column.fullName] = subject.newlyGeneratedId;
|
||||
conditions[column.databaseName] = subject.newlyGeneratedId;
|
||||
|
||||
} else if (subject.generatedObjectId) {
|
||||
conditions[column.fullName] = subject.generatedObjectId;
|
||||
conditions[column.databaseName] = subject.generatedObjectId;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -355,20 +355,20 @@ export class SubjectOperationExecutor {
|
||||
}
|
||||
}
|
||||
if (relationIdOfEntityValue) {
|
||||
conditions[column.fullName] = relationIdOfEntityValue;
|
||||
conditions[column.databaseName] = relationIdOfEntityValue;
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
const entityValueInsertSubject = this.insertSubjects.find(subject => subject.entity === subRelatedEntity);
|
||||
if (entityValue) {
|
||||
conditions[column.fullName] = entityValue;
|
||||
conditions[column.databaseName] = entityValue;
|
||||
} else {
|
||||
if (entityValueInsertSubject && entityValueInsertSubject.newlyGeneratedId) {
|
||||
conditions[column.fullName] = entityValueInsertSubject.newlyGeneratedId;
|
||||
conditions[column.databaseName] = entityValueInsertSubject.newlyGeneratedId;
|
||||
|
||||
} else if (entityValueInsertSubject && entityValueInsertSubject.generatedObjectId) {
|
||||
conditions[column.fullName] = entityValueInsertSubject.generatedObjectId;
|
||||
conditions[column.databaseName] = entityValueInsertSubject.generatedObjectId;
|
||||
|
||||
}
|
||||
}
|
||||
@ -393,9 +393,9 @@ export class SubjectOperationExecutor {
|
||||
}
|
||||
}
|
||||
}
|
||||
updateOptions[joinColumn.fullName] = id;
|
||||
updateOptions[joinColumn.databaseName] = id;
|
||||
} else {
|
||||
updateOptions[joinColumn.fullName] = subject.entity[referencedColumn.propertyName] || subject.newlyGeneratedId || subRelatedEntity.generatedObjectId;
|
||||
updateOptions[joinColumn.databaseName] = subject.entity[referencedColumn.propertyName] || subject.newlyGeneratedId || subRelatedEntity.generatedObjectId;
|
||||
}
|
||||
|
||||
const updatePromise = this.queryRunner.update(relation.inverseEntityMetadata.tableName, updateOptions, conditions);
|
||||
@ -471,7 +471,7 @@ export class SubjectOperationExecutor {
|
||||
if (value === null || value === undefined)
|
||||
return;
|
||||
|
||||
values[column.fullName] = this.connection.driver.preparePersistentValue(value, column); // todo: maybe preparePersistentValue is not responsibility of this class
|
||||
values[column.databaseName] = this.connection.driver.preparePersistentValue(value, column); // todo: maybe preparePersistentValue is not responsibility of this class
|
||||
});
|
||||
|
||||
metadata.relationsWithJoinColumns.forEach(relation => {
|
||||
@ -533,7 +533,7 @@ export class SubjectOperationExecutor {
|
||||
}
|
||||
|
||||
if (relationValue) {
|
||||
values[joinColumn.fullName] = relationValue;
|
||||
values[joinColumn.databaseName] = relationValue;
|
||||
}
|
||||
|
||||
});
|
||||
@ -542,25 +542,25 @@ export class SubjectOperationExecutor {
|
||||
// add special column and value - date of creation
|
||||
if (metadata.hasCreateDateColumn) {
|
||||
const value = this.connection.driver.preparePersistentValue(date, metadata.createDateColumn);
|
||||
values[metadata.createDateColumn.fullName] = value;
|
||||
values[metadata.createDateColumn.databaseName] = value;
|
||||
}
|
||||
|
||||
// add special column and value - date of updating
|
||||
if (metadata.hasUpdateDateColumn) {
|
||||
const value = this.connection.driver.preparePersistentValue(date, metadata.updateDateColumn);
|
||||
values[metadata.updateDateColumn.fullName] = value;
|
||||
values[metadata.updateDateColumn.databaseName] = value;
|
||||
}
|
||||
|
||||
// add special column and value - version column
|
||||
if (metadata.hasVersionColumn) {
|
||||
const value = this.connection.driver.preparePersistentValue(1, metadata.versionColumn);
|
||||
values[metadata.versionColumn.fullName] = value;
|
||||
values[metadata.versionColumn.databaseName] = value;
|
||||
}
|
||||
|
||||
// add special column and value - discriminator value (for tables using table inheritance)
|
||||
if (metadata.hasDiscriminatorColumn) {
|
||||
const value = this.connection.driver.preparePersistentValue(discriminatorValue || metadata.discriminatorValue, metadata.discriminatorColumn);
|
||||
values[metadata.discriminatorColumn.fullName] = value;
|
||||
values[metadata.discriminatorColumn.databaseName] = value;
|
||||
}
|
||||
|
||||
// add special column and value - tree level and tree parents (for tree-type tables)
|
||||
@ -568,12 +568,12 @@ export class SubjectOperationExecutor {
|
||||
const parentEntity = entity[metadata.treeParentRelation.propertyName];
|
||||
const parentLevel = parentEntity ? (parentEntity[metadata.treeLevelColumn.propertyName] || 0) : 0;
|
||||
|
||||
values[metadata.treeLevelColumn.fullName] = parentLevel + 1;
|
||||
values[metadata.treeLevelColumn.databaseName] = parentLevel + 1;
|
||||
}
|
||||
|
||||
// add special column and value - parent id column (for tables using table inheritance)
|
||||
if (metadata.parentEntityMetadata && metadata.hasParentIdColumn) { // todo: should be array of primary keys
|
||||
values[metadata.parentIdColumn.fullName] = parentIdColumnValue || entity[metadata.parentEntityMetadata.firstPrimaryColumn.propertyName];
|
||||
values[metadata.parentIdColumn.databaseName] = parentIdColumnValue || entity[metadata.parentEntityMetadata.firstPrimaryColumn.propertyName];
|
||||
}
|
||||
|
||||
return values;
|
||||
@ -646,8 +646,8 @@ export class SubjectOperationExecutor {
|
||||
subject.treeLevel = await this.queryRunner.insertIntoClosureTable(tableName, newEntityId, parentEntityId, subject.metadata.hasTreeLevelColumn);
|
||||
|
||||
if (subject.metadata.hasTreeLevelColumn) {
|
||||
const values = { [subject.metadata.treeLevelColumn.fullName]: subject.treeLevel };
|
||||
await this.queryRunner.update(subject.metadata.tableName, values, { [referencedColumn.fullName]: newEntityId });
|
||||
const values = { [subject.metadata.treeLevelColumn.databaseName]: subject.treeLevel };
|
||||
await this.queryRunner.update(subject.metadata.tableName, values, { [referencedColumn.databaseName]: newEntityId });
|
||||
}
|
||||
}
|
||||
|
||||
@ -702,7 +702,7 @@ export class SubjectOperationExecutor {
|
||||
const value: ObjectLiteral = {};
|
||||
subject.metadata.columns.forEach(column => {
|
||||
if (entity[column.propertyName] !== undefined)
|
||||
value[column.fullName] = column.getValue(entity);
|
||||
value[column.databaseName] = column.getValue(entity);
|
||||
});
|
||||
// addEmbeddedValuesRecursively(entity, value, subject.metadata.embeddeds);
|
||||
|
||||
@ -711,10 +711,10 @@ export class SubjectOperationExecutor {
|
||||
return;
|
||||
|
||||
if (subject.metadata.hasUpdateDateColumn)
|
||||
value[subject.metadata.updateDateColumn.fullName] = this.connection.driver.preparePersistentValue(new Date(), subject.metadata.updateDateColumn);
|
||||
value[subject.metadata.updateDateColumn.databaseName] = this.connection.driver.preparePersistentValue(new Date(), subject.metadata.updateDateColumn);
|
||||
|
||||
if (subject.metadata.hasVersionColumn)
|
||||
value[subject.metadata.versionColumn.fullName] = this.connection.driver.preparePersistentValue(entity[subject.metadata.versionColumn.propertyName] + 1, subject.metadata.versionColumn);
|
||||
value[subject.metadata.versionColumn.databaseName] = this.connection.driver.preparePersistentValue(entity[subject.metadata.versionColumn.propertyName] + 1, subject.metadata.versionColumn);
|
||||
|
||||
// console.log(value);
|
||||
// console.log("idMap:", idMap);
|
||||
@ -734,7 +734,7 @@ export class SubjectOperationExecutor {
|
||||
valueMaps.push(valueMap);
|
||||
}
|
||||
|
||||
valueMap.values[column.fullName] = this.connection.driver.preparePersistentValue(column.getValue(entity), column);
|
||||
valueMap.values[column.databaseName] = this.connection.driver.preparePersistentValue(column.getValue(entity), column);
|
||||
});
|
||||
|
||||
subject.diffRelations.forEach(relation => {
|
||||
@ -746,7 +746,7 @@ export class SubjectOperationExecutor {
|
||||
|
||||
const value = relation.getEntityValue(entity);
|
||||
relation.joinColumns.forEach(joinColumn => {
|
||||
valueMap!.values[joinColumn.name] = value !== null && value !== undefined ? value[joinColumn.referencedColumn!.propertyName] : null; // todo: should not have a call to primaryColumn, instead join column metadata should be used
|
||||
valueMap!.values[joinColumn.databaseName] = value !== null && value !== undefined ? value[joinColumn.referencedColumn!.propertyName] : null; // todo: should not have a call to primaryColumn, instead join column metadata should be used
|
||||
});
|
||||
});
|
||||
|
||||
@ -761,7 +761,7 @@ export class SubjectOperationExecutor {
|
||||
valueMaps.push(valueMap);
|
||||
}
|
||||
|
||||
valueMap.values[subject.metadata.updateDateColumn.fullName] = this.connection.driver.preparePersistentValue(new Date(), subject.metadata.updateDateColumn);
|
||||
valueMap.values[subject.metadata.updateDateColumn.databaseName] = this.connection.driver.preparePersistentValue(new Date(), subject.metadata.updateDateColumn);
|
||||
}
|
||||
|
||||
if (subject.metadata.hasVersionColumn) {
|
||||
@ -771,7 +771,7 @@ export class SubjectOperationExecutor {
|
||||
valueMaps.push(valueMap);
|
||||
}
|
||||
|
||||
valueMap.values[subject.metadata.versionColumn.fullName] = this.connection.driver.preparePersistentValue(entity[subject.metadata.versionColumn.propertyName] + 1, subject.metadata.versionColumn);
|
||||
valueMap.values[subject.metadata.versionColumn.databaseName] = this.connection.driver.preparePersistentValue(entity[subject.metadata.versionColumn.propertyName] + 1, subject.metadata.versionColumn);
|
||||
}
|
||||
|
||||
if (subject.metadata.parentEntityMetadata) {
|
||||
@ -786,7 +786,7 @@ export class SubjectOperationExecutor {
|
||||
valueMaps.push(valueMap);
|
||||
}
|
||||
|
||||
valueMap.values[subject.metadata.parentEntityMetadata.updateDateColumn.fullName] = this.connection.driver.preparePersistentValue(new Date(), subject.metadata.parentEntityMetadata.updateDateColumn);
|
||||
valueMap.values[subject.metadata.parentEntityMetadata.updateDateColumn.databaseName] = this.connection.driver.preparePersistentValue(new Date(), subject.metadata.parentEntityMetadata.updateDateColumn);
|
||||
}
|
||||
|
||||
if (subject.metadata.parentEntityMetadata.hasVersionColumn) {
|
||||
@ -800,7 +800,7 @@ export class SubjectOperationExecutor {
|
||||
valueMaps.push(valueMap);
|
||||
}
|
||||
|
||||
valueMap.values[subject.metadata.parentEntityMetadata.versionColumn.fullName] = this.connection.driver.preparePersistentValue(entity[subject.metadata.parentEntityMetadata.versionColumn.propertyName] + 1, subject.metadata.parentEntityMetadata.versionColumn);
|
||||
valueMap.values[subject.metadata.parentEntityMetadata.versionColumn.databaseName] = this.connection.driver.preparePersistentValue(entity[subject.metadata.parentEntityMetadata.versionColumn.propertyName] + 1, subject.metadata.parentEntityMetadata.versionColumn);
|
||||
}
|
||||
}
|
||||
|
||||
@ -832,7 +832,7 @@ export class SubjectOperationExecutor {
|
||||
subject.relationUpdates.forEach(setRelation => {
|
||||
setRelation.relation.joinColumns.forEach(joinColumn => {
|
||||
const value = setRelation.value ? setRelation.value[joinColumn.referencedColumn!.propertyName] : null;
|
||||
values[joinColumn.fullName] = value; // todo: || fromInsertedSubjects ??
|
||||
values[joinColumn.databaseName] = value; // todo: || fromInsertedSubjects ??
|
||||
});
|
||||
});
|
||||
|
||||
@ -861,13 +861,13 @@ export class SubjectOperationExecutor {
|
||||
if (subject.metadata.parentEntityMetadata) { // this code should not be there. it should be handled by subject.metadata.getEntityIdColumnMap
|
||||
const parentConditions: ObjectLiteral = {};
|
||||
subject.metadata.parentPrimaryColumns.forEach(column => {
|
||||
parentConditions[column.fullName] = subject.databaseEntity[column.propertyName];
|
||||
parentConditions[column.databaseName] = subject.databaseEntity[column.propertyName];
|
||||
});
|
||||
await this.queryRunner.delete(subject.metadata.parentEntityMetadata.tableName, parentConditions);
|
||||
|
||||
const childConditions: ObjectLiteral = {};
|
||||
subject.metadata.primaryColumnsWithParentIdColumns.forEach(column => {
|
||||
childConditions[column.fullName] = subject.databaseEntity[column.propertyName];
|
||||
childConditions[column.databaseName] = subject.databaseEntity[column.propertyName];
|
||||
});
|
||||
await this.queryRunner.delete(subject.metadata.tableName, childConditions);
|
||||
} else {
|
||||
@ -935,7 +935,7 @@ export class SubjectOperationExecutor {
|
||||
if (!relationId)
|
||||
throw new Error(`Cannot insert object of ${(newBindEntity.constructor as any).name} type. Looks like its not persisted yet, or cascades are not set on the relation.`); // todo: better error message
|
||||
|
||||
const columns = relation.junctionEntityMetadata.columnsWithoutEmbeddeds.map(column => column.fullName);
|
||||
const columns = relation.junctionEntityMetadata.columnsWithoutEmbeddeds.map(column => column.databaseName);
|
||||
const values = relation.isOwning ? [...ownId, ...relationId] : [...relationId, ...ownId];
|
||||
|
||||
return this.queryRunner.insert(relation.junctionEntityMetadata.tableName, OrmUtils.zipObject(columns, values));
|
||||
@ -973,14 +973,14 @@ export class SubjectOperationExecutor {
|
||||
const secondJoinColumns = junctionRemove.relation.isOwning ? junctionRemove.relation.inverseJoinColumns : junctionRemove.relation.inverseRelation.joinColumns;
|
||||
let conditions: ObjectLiteral = {};
|
||||
firstJoinColumns.forEach(joinColumn => {
|
||||
conditions[joinColumn.fullName] = joinColumn.referencedColumn!.getValue(entity);
|
||||
conditions[joinColumn.databaseName] = joinColumn.referencedColumn!.getValue(entity);
|
||||
});
|
||||
|
||||
const removePromises = junctionRemove.junctionRelationIds.map(relationIds => {
|
||||
let inverseConditions: ObjectLiteral = {};
|
||||
Object.keys(relationIds).forEach(key => {
|
||||
const joinColumn = secondJoinColumns.find(column => column.referencedColumn!.propertyName === key);
|
||||
inverseConditions[joinColumn!.fullName] = relationIds[key];
|
||||
inverseConditions[joinColumn!.databaseName] = relationIds[key];
|
||||
});
|
||||
return this.queryRunner.delete(junctionMetadata.tableName, Object.assign({}, inverseConditions, conditions));
|
||||
});
|
||||
|
||||
@ -883,11 +883,11 @@ export class QueryBuilder<Entity> {
|
||||
const metadata = this.expressionMap.mainAlias!.metadata;
|
||||
let idsQuery = `SELECT `;
|
||||
idsQuery += metadata.primaryColumns.map((primaryColumn, index) => {
|
||||
const propertyName = this.escapeAlias(mainAliasName + "_" + primaryColumn.fullName);
|
||||
const propertyName = this.escapeAlias(mainAliasName + "_" + primaryColumn.databaseName);
|
||||
if (index === 0) {
|
||||
return `DISTINCT(${distinctAlias}.${propertyName}) as ids_${primaryColumn.fullName}`;
|
||||
return `DISTINCT(${distinctAlias}.${propertyName}) as ids_${primaryColumn.databaseName}`;
|
||||
} else {
|
||||
return `${distinctAlias}.${propertyName}) as ids_${primaryColumn.fullName}`;
|
||||
return `${distinctAlias}.${propertyName}) as ids_${primaryColumn.databaseName}`;
|
||||
}
|
||||
}).join(", ");
|
||||
if (selects.length > 0)
|
||||
@ -898,7 +898,7 @@ export class QueryBuilder<Entity> {
|
||||
if (orderBys.length > 0) {
|
||||
idsQuery += " ORDER BY " + orderBys;
|
||||
} else {
|
||||
idsQuery += ` ORDER BY "ids_${metadata.firstPrimaryColumn.fullName}"`; // this is required for mssql driver if firstResult is used. Other drivers don't care about it
|
||||
idsQuery += ` ORDER BY "ids_${metadata.firstPrimaryColumn.databaseName}"`; // this is required for mssql driver if firstResult is used. Other drivers don't care about it
|
||||
}
|
||||
|
||||
if (this.connection.driver instanceof SqlServerDriver) { // todo: temporary. need to refactor and make a proper abstraction
|
||||
@ -994,7 +994,7 @@ export class QueryBuilder<Entity> {
|
||||
|
||||
const distinctAlias = this.escapeAlias(mainAlias);
|
||||
let countSql = `COUNT(` + metadata.primaryColumnsWithParentIdColumns.map((primaryColumn, index) => {
|
||||
const propertyName = this.escapeColumn(primaryColumn.fullName);
|
||||
const propertyName = this.escapeColumn(primaryColumn.databaseName);
|
||||
if (index === 0) {
|
||||
return `DISTINCT(${distinctAlias}.${propertyName})`;
|
||||
} else {
|
||||
@ -1216,8 +1216,8 @@ export class QueryBuilder<Entity> {
|
||||
return columns.map(column => {
|
||||
const selection = this.expressionMap.selects.find(select => select.selection === aliasName + "." + column.propertyName);
|
||||
return {
|
||||
selection: this.escapeAlias(aliasName) + "." + this.escapeColumn(column.fullName),
|
||||
aliasName: selection && selection.aliasName ? selection.aliasName : aliasName + "_" + column.fullName,
|
||||
selection: this.escapeAlias(aliasName) + "." + this.escapeColumn(column.databaseName),
|
||||
aliasName: selection && selection.aliasName ? selection.aliasName : aliasName + "_" + column.databaseName,
|
||||
// todo: need to keep in mind that custom selection.aliasName breaks hydrator. fix it later!
|
||||
};
|
||||
// return this.escapeAlias(aliasName) + "." + this.escapeColumn(column.fullName) +
|
||||
@ -1285,7 +1285,7 @@ export class QueryBuilder<Entity> {
|
||||
const alias = "parentIdColumn_" + ea(this.expressionMap.mainAlias!.metadata.parentEntityMetadata.tableName);
|
||||
this.expressionMap.mainAlias!.metadata.parentEntityMetadata.columns.forEach(column => {
|
||||
// TODO implement partial select
|
||||
allSelects.push({ selection: ea(alias + "." + column.fullName), aliasName: alias + "_" + column.fullName });
|
||||
allSelects.push({ selection: ea(alias + "." + column.databaseName), aliasName: alias + "_" + column.databaseName });
|
||||
// allSelects.push(alias + "." + ec(column.fullName) + " AS " + alias + "_" + ea(column.fullName));
|
||||
});
|
||||
}
|
||||
@ -1389,7 +1389,7 @@ export class QueryBuilder<Entity> {
|
||||
if (this.expressionMap.mainAlias!.hasMetadata) {
|
||||
const mainMetadata = this.expressionMap.mainAlias!.metadata;
|
||||
if (mainMetadata.hasDiscriminatorColumn)
|
||||
return ` WHERE ${ conditions.length ? "(" + conditions + ") AND" : "" } ${mainMetadata.discriminatorColumn.fullName}=:discriminatorColumnValue`;
|
||||
return ` WHERE ${ conditions.length ? "(" + conditions + ") AND" : "" } ${mainMetadata.discriminatorColumn.databaseName}=:discriminatorColumnValue`;
|
||||
}
|
||||
|
||||
if (!conditions.length) return "";
|
||||
@ -1411,11 +1411,11 @@ export class QueryBuilder<Entity> {
|
||||
// });
|
||||
alias.metadata.columns.forEach(column => {
|
||||
const expression = "([ =\(]|^.{0})" + alias.name + "\\." + column.propertyPath + "([ =]|.{0}$)";
|
||||
statement = statement.replace(new RegExp(expression, "gm"), "$1" + this.escapeAlias(alias.name) + "." + this.escapeColumn(column.fullName) + "$2");
|
||||
statement = statement.replace(new RegExp(expression, "gm"), "$1" + this.escapeAlias(alias.name) + "." + this.escapeColumn(column.databaseName) + "$2");
|
||||
});
|
||||
alias.metadata.relationsWithJoinColumns/*.filter(relation => !relation.isInEmbedded)*/.forEach(relation => {
|
||||
const expression = "([ =\(]|^.{0})" + alias.name + "\\." + relation.propertyPath + "([ =]|.{0}$)";
|
||||
statement = statement.replace(new RegExp(expression, "gm"), "$1" + this.escapeAlias(alias.name) + "." + this.escapeColumn(relation.joinColumns[0].fullName) + "$2"); // todo: fix relation.joinColumns[0], what if multiple columns
|
||||
statement = statement.replace(new RegExp(expression, "gm"), "$1" + this.escapeAlias(alias.name) + "." + this.escapeColumn(relation.joinColumns[0].databaseName) + "$2"); // todo: fix relation.joinColumns[0], what if multiple columns
|
||||
});
|
||||
});
|
||||
return statement;
|
||||
@ -1455,7 +1455,7 @@ export class QueryBuilder<Entity> {
|
||||
|
||||
// JOIN `category` `category` ON `category`.`id` = `post`.`categoryId`
|
||||
const condition = relation.joinColumns.map(joinColumn => {
|
||||
return ea(destinationTableAlias) + "." + ec(joinColumn.referencedColumn!.fullName) + "=" + ea(parentAlias) + "." + ec(joinColumn.propertyName);
|
||||
return ea(destinationTableAlias) + "." + ec(joinColumn.referencedColumn!.databaseName) + "=" + ea(parentAlias) + "." + ec(joinColumn.propertyName);
|
||||
}).join(" AND ");
|
||||
|
||||
return " " + joinAttr.direction + " JOIN " + et(destinationTableName) + " " + ea(destinationTableAlias) + " ON " + condition + appendedCondition;
|
||||
@ -1464,7 +1464,7 @@ export class QueryBuilder<Entity> {
|
||||
|
||||
// JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`
|
||||
const condition = relation.inverseRelation.joinColumns.map(joinColumn => {
|
||||
return ea(destinationTableAlias!) + "." + ec(joinColumn.propertyName) + "=" + ea(parentAlias) + "." + ec(joinColumn.referencedColumn!.fullName);
|
||||
return ea(destinationTableAlias!) + "." + ec(joinColumn.propertyName) + "=" + ea(parentAlias) + "." + ec(joinColumn.referencedColumn!.databaseName);
|
||||
}).join(" AND ");
|
||||
|
||||
return " " + joinAttr.direction + " JOIN " + et(destinationTableName) + " " + ea(destinationTableAlias) + " ON " + condition + appendedCondition;
|
||||
@ -1479,23 +1479,23 @@ export class QueryBuilder<Entity> {
|
||||
|
||||
junctionCondition = relation.joinColumns.map(joinColumn => {
|
||||
// `post_category`.`postId` = `post`.`id`
|
||||
return ea(junctionAlias) + "." + ec(joinColumn.propertyName) + "=" + ea(parentAlias) + "." + ec(joinColumn.referencedColumn!.fullName);
|
||||
return ea(junctionAlias) + "." + ec(joinColumn.propertyName) + "=" + ea(parentAlias) + "." + ec(joinColumn.referencedColumn!.databaseName);
|
||||
}).join(" AND ");
|
||||
|
||||
destinationCondition = relation.inverseJoinColumns.map(joinColumn => {
|
||||
// `category`.`id` = `post_category`.`categoryId`
|
||||
return ea(destinationTableAlias) + "." + ec(joinColumn.referencedColumn!.fullName) + "=" + ea(junctionAlias) + "." + ec(joinColumn.propertyName);
|
||||
return ea(destinationTableAlias) + "." + ec(joinColumn.referencedColumn!.databaseName) + "=" + ea(junctionAlias) + "." + ec(joinColumn.propertyName);
|
||||
}).join(" AND ");
|
||||
|
||||
} else {
|
||||
junctionCondition = relation.inverseRelation.inverseJoinColumns.map(joinColumn => {
|
||||
// `post_category`.`categoryId` = `category`.`id`
|
||||
return ea(junctionAlias) + "." + ec(joinColumn.propertyName) + "=" + ea(parentAlias) + "." + ec(joinColumn.referencedColumn!.fullName);
|
||||
return ea(junctionAlias) + "." + ec(joinColumn.propertyName) + "=" + ea(parentAlias) + "." + ec(joinColumn.referencedColumn!.databaseName);
|
||||
}).join(" AND ");
|
||||
|
||||
destinationCondition = relation.inverseRelation.joinColumns.map(joinColumn => {
|
||||
// `post`.`id` = `post_category`.`postId`
|
||||
return ea(destinationTableAlias) + "." + ec(joinColumn.referencedColumn!.fullName) + "=" + ea(junctionAlias) + "." + ec(joinColumn.propertyName);
|
||||
return ea(destinationTableAlias) + "." + ec(joinColumn.referencedColumn!.databaseName) + "=" + ea(junctionAlias) + "." + ec(joinColumn.propertyName);
|
||||
}).join(" AND ");
|
||||
}
|
||||
|
||||
@ -1512,7 +1512,7 @@ export class QueryBuilder<Entity> {
|
||||
const alias = "parentIdColumn_" + metadata.parentEntityMetadata.tableName;
|
||||
const parentJoin = " JOIN " + et(metadata.parentEntityMetadata.tableName) + " " + ea(alias) + " ON " +
|
||||
metadata.parentIdColumns.map(parentIdColumn => {
|
||||
return this.expressionMap.mainAlias!.name + "." + parentIdColumn.fullName + "=" + ea(alias) + "." + parentIdColumn.propertyName;
|
||||
return this.expressionMap.mainAlias!.name + "." + parentIdColumn.databaseName + "=" + ea(alias) + "." + parentIdColumn.propertyName;
|
||||
});
|
||||
joins.push(parentJoin);
|
||||
}
|
||||
@ -1627,11 +1627,11 @@ export class QueryBuilder<Entity> {
|
||||
const whereSubStrings: string[] = [];
|
||||
// if (metadata.hasMultiplePrimaryKeys) {
|
||||
metadata.primaryColumns.forEach((primaryColumn, secondIndex) => {
|
||||
whereSubStrings.push(ea(alias) + "." + ec(primaryColumn.fullName) + "=:id_" + index + "_" + secondIndex);
|
||||
whereSubStrings.push(ea(alias) + "." + ec(primaryColumn.databaseName) + "=:id_" + index + "_" + secondIndex);
|
||||
parameters["id_" + index + "_" + secondIndex] = primaryColumn.getValue(id);
|
||||
});
|
||||
metadata.parentIdColumns.forEach((primaryColumn, secondIndex) => {
|
||||
whereSubStrings.push(ea(alias) + "." + ec(id[primaryColumn.fullName]) + "=:parentId_" + index + "_" + secondIndex);
|
||||
whereSubStrings.push(ea(alias) + "." + ec(id[primaryColumn.databaseName]) + "=:parentId_" + index + "_" + secondIndex);
|
||||
parameters["parentId_" + index + "_" + secondIndex] = primaryColumn.getValue(id);
|
||||
});
|
||||
// } else {
|
||||
|
||||
@ -78,14 +78,14 @@ export class RelationCountLoader {
|
||||
let secondJunctionColumn: ColumnMetadata;
|
||||
|
||||
if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].
|
||||
joinTableColumnName = relationCountAttr.relation.joinColumns[0].referencedColumn!.fullName;
|
||||
inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn!.fullName;
|
||||
joinTableColumnName = relationCountAttr.relation.joinColumns[0].referencedColumn!.databaseName;
|
||||
inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn!.databaseName;
|
||||
firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columnsWithoutEmbeddeds[0];
|
||||
secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columnsWithoutEmbeddeds[1];
|
||||
|
||||
} else {
|
||||
joinTableColumnName = relationCountAttr.relation.inverseRelation.inverseJoinColumns[0].referencedColumn!.fullName;
|
||||
inverseJoinColumnName = relationCountAttr.relation.inverseRelation.joinColumns[0].referencedColumn!.fullName;
|
||||
joinTableColumnName = relationCountAttr.relation.inverseRelation.inverseJoinColumns[0].referencedColumn!.databaseName;
|
||||
inverseJoinColumnName = relationCountAttr.relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName;
|
||||
firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columnsWithoutEmbeddeds[1];
|
||||
secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columnsWithoutEmbeddeds[0];
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ export class RelationIdLoader {
|
||||
qb.select(inverseSideTableAlias + "." + inverseSidePropertyName, "manyToManyId");
|
||||
|
||||
inverseRelation.entityMetadata.primaryColumns.forEach(primaryColumn => {
|
||||
qb.addSelect(inverseSideTableAlias + "." + primaryColumn.fullName, inverseSideTableAlias + "_" + primaryColumn.fullName);
|
||||
qb.addSelect(inverseSideTableAlias + "." + primaryColumn.databaseName, inverseSideTableAlias + "_" + primaryColumn.databaseName);
|
||||
});
|
||||
|
||||
qb.from(inverseSideTable, inverseSideTableAlias)
|
||||
@ -111,10 +111,10 @@ export class RelationIdLoader {
|
||||
}
|
||||
|
||||
if (inverseRelation.entityMetadata.primaryColumns.length === 1) {
|
||||
result.id.push(rawResult[inverseSideTableAlias + "_" + inverseRelation.entityMetadata.firstPrimaryColumn.fullName]);
|
||||
result.id.push(rawResult[inverseSideTableAlias + "_" + inverseRelation.entityMetadata.firstPrimaryColumn.databaseName]);
|
||||
} else {
|
||||
result.id.push(inverseRelation.entityMetadata.primaryColumns.reduce((ids, primaryColumn) => {
|
||||
ids[primaryColumn.propertyName] = rawResult[inverseSideTableAlias + "_" + primaryColumn.fullName];
|
||||
ids[primaryColumn.propertyName] = rawResult[inverseSideTableAlias + "_" + primaryColumn.databaseName];
|
||||
return ids;
|
||||
}, {} as ObjectLiteral));
|
||||
}
|
||||
@ -140,14 +140,14 @@ export class RelationIdLoader {
|
||||
let secondJunctionColumn: ColumnMetadata;
|
||||
|
||||
if (relationIdAttr.relation.isOwning) { // todo fix joinColumns[0]
|
||||
joinTableColumnName = relationIdAttr.relation.joinColumns[0].referencedColumn!.fullName;
|
||||
inverseJoinColumnName = relationIdAttr.relation.joinColumns[0].referencedColumn!.fullName;
|
||||
joinTableColumnName = relationIdAttr.relation.joinColumns[0].referencedColumn!.databaseName;
|
||||
inverseJoinColumnName = relationIdAttr.relation.joinColumns[0].referencedColumn!.databaseName;
|
||||
firstJunctionColumn = relationIdAttr.relation.junctionEntityMetadata.columns[0];
|
||||
secondJunctionColumn = relationIdAttr.relation.junctionEntityMetadata.columns[1];
|
||||
|
||||
} else {
|
||||
joinTableColumnName = relationIdAttr.relation.inverseRelation.joinColumns[0].referencedColumn!.fullName;
|
||||
inverseJoinColumnName = relationIdAttr.relation.inverseRelation.joinColumns[0].referencedColumn!.fullName;
|
||||
joinTableColumnName = relationIdAttr.relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName;
|
||||
inverseJoinColumnName = relationIdAttr.relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName;
|
||||
firstJunctionColumn = relationIdAttr.relation.junctionEntityMetadata.columns[1];
|
||||
secondJunctionColumn = relationIdAttr.relation.junctionEntityMetadata.columns[0];
|
||||
}
|
||||
@ -203,7 +203,7 @@ export class RelationIdLoader {
|
||||
|
||||
protected createIdMap(columns: ColumnMetadata[], parentAlias: string, rawEntity: any) {
|
||||
return columns.reduce((idMap, primaryColumn) => {
|
||||
idMap[primaryColumn.propertyName] = rawEntity[parentAlias + "_" + primaryColumn.fullName];
|
||||
idMap[primaryColumn.propertyName] = rawEntity[parentAlias + "_" + primaryColumn.databaseName];
|
||||
return idMap;
|
||||
}, {} as ObjectLiteral);
|
||||
}
|
||||
|
||||
@ -32,18 +32,18 @@ export class DocumentToEntityTransformer {
|
||||
let hasData = false;
|
||||
|
||||
// handle _id property the special way
|
||||
if (metadata.hasObjectIdColumn && document[metadata.objectIdColumn.name]) {
|
||||
if (metadata.hasObjectIdColumn && document[metadata.objectIdColumn.databaseName]) {
|
||||
// todo: we can't use driver in this class
|
||||
// do we really need prepare hydrated value here? If no then no problem. If yes then think maybe prepareHydratedValue process should be extracted out of driver class?
|
||||
// entity[metadata.objectIdColumn.propertyName] = this.driver.prepareHydratedValue(document[metadata.objectIdColumn.name"], metadata.objectIdColumn);
|
||||
entity[metadata.objectIdColumn.propertyName] = document[metadata.objectIdColumn.name];
|
||||
entity[metadata.objectIdColumn.propertyName] = document[metadata.objectIdColumn.databaseName];
|
||||
hasData = true;
|
||||
}
|
||||
|
||||
// add special columns that contains relation ids
|
||||
if (this.enableRelationIdValues) {
|
||||
metadata.columns.filter(column => !!column.relationMetadata).forEach(column => {
|
||||
const valueInObject = document[column.name];
|
||||
const valueInObject = document[column.databaseName];
|
||||
if (valueInObject !== undefined && valueInObject !== null && column.propertyName) {
|
||||
// todo: we can't use driver in this class
|
||||
// const value = this.driver.prepareHydratedValue(valueInObject, column);
|
||||
@ -68,7 +68,7 @@ export class DocumentToEntityTransformer {
|
||||
|
||||
// get value from columns selections and put them into object
|
||||
metadata.columnsWithoutEmbeddeds.forEach(column => {
|
||||
const valueInObject = document[column.name];
|
||||
const valueInObject = document[column.databaseName];
|
||||
if (valueInObject !== undefined &&
|
||||
valueInObject !== null &&
|
||||
column.propertyName &&
|
||||
@ -91,14 +91,14 @@ export class DocumentToEntityTransformer {
|
||||
entity[embedded.propertyName] = (document[embedded.prefix] as any[]).map(subValue => {
|
||||
const newItem = embedded.create();
|
||||
embedded.columns.forEach(column => {
|
||||
newItem[column.propertyName] = subValue[column.name];
|
||||
newItem[column.propertyName] = subValue[column.databaseName];
|
||||
});
|
||||
return newItem;
|
||||
});
|
||||
|
||||
} else {
|
||||
embedded.columns.forEach(column => {
|
||||
const value = document[embedded.prefix][column.name];
|
||||
const value = document[embedded.prefix][column.databaseName];
|
||||
if (!value) return;
|
||||
|
||||
if (!entity[embedded.propertyName])
|
||||
|
||||
@ -46,7 +46,7 @@ export class RawSqlResultsToEntityTransformer {
|
||||
protected group(rawResults: any[], alias: Alias): any[][] {
|
||||
const groupedResults: { id: any, items: any[] }[] = [];
|
||||
rawResults.forEach(rawResult => {
|
||||
const id = alias.metadata.primaryColumnsWithParentIdColumns.map(column => rawResult[alias.name + "_" + column.fullName]).join("_"); // todo: check partial
|
||||
const id = alias.metadata.primaryColumnsWithParentIdColumns.map(column => rawResult[alias.name + "_" + column.databaseName]).join("_"); // todo: check partial
|
||||
if (!id) return;
|
||||
|
||||
let group = groupedResults.find(groupedResult => groupedResult.id === id);
|
||||
@ -85,7 +85,7 @@ export class RawSqlResultsToEntityTransformer {
|
||||
protected transformColumns(rawResults: any[], alias: Alias, entity: ObjectLiteral, columns: ColumnMetadata[]): boolean {
|
||||
let hasData = false;
|
||||
columns.forEach(column => {
|
||||
const value = rawResults[0][alias.name + "_" + column.fullName];
|
||||
const value = rawResults[0][alias.name + "_" + column.databaseName];
|
||||
if (value === undefined || value === null || column.isVirtual || column.isParentId || column.isDiscriminator)
|
||||
return;
|
||||
|
||||
@ -145,16 +145,16 @@ export class RawSqlResultsToEntityTransformer {
|
||||
let idMap: any, referenceColumnValue: any;
|
||||
if (relation.isManyToOne || relation.isOneToOneOwner) {
|
||||
idMap = relation.entityMetadata.primaryColumns.reduce((idMap, primaryColumn) => {
|
||||
idMap[primaryColumn.propertyName] = rawSqlResults[0][alias.name + "_" + primaryColumn.fullName];
|
||||
idMap[primaryColumn.propertyName] = rawSqlResults[0][alias.name + "_" + primaryColumn.databaseName];
|
||||
return idMap;
|
||||
}, {} as ObjectLiteral);
|
||||
|
||||
} else {
|
||||
let referenceColumnName: string;
|
||||
if (relation.isOneToMany || relation.isOneToOneNotOwner) { // todo: fix joinColumns[0]
|
||||
referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn!.fullName;
|
||||
referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName;
|
||||
} else {
|
||||
referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.fullName : relation.inverseRelation.joinColumns[0].referencedColumn!.fullName;
|
||||
referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.databaseName : relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName;
|
||||
}
|
||||
referenceColumnValue = rawSqlResults[0][alias.name + "_" + referenceColumnName];
|
||||
if (referenceColumnValue === undefined || referenceColumnValue === null)
|
||||
@ -183,10 +183,10 @@ export class RawSqlResultsToEntityTransformer {
|
||||
let referenceColumnName: string;
|
||||
|
||||
if (relation.isOneToMany) {
|
||||
referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn!.fullName; // todo: fix joinColumns[0]
|
||||
referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName; // todo: fix joinColumns[0]
|
||||
|
||||
} else {
|
||||
referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.fullName : relation.inverseRelation.joinColumns[0].referencedColumn!.fullName;
|
||||
referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.databaseName : relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName;
|
||||
}
|
||||
|
||||
const referenceColumnValue = rawSqlResults[0][alias.name + "_" + referenceColumnName]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work
|
||||
|
||||
@ -60,11 +60,11 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
if (relation.isOwning) {
|
||||
table = relation.entityMetadata.tableName;
|
||||
values[relation.name] = relatedEntityId;
|
||||
conditions[relation.joinColumns[0].referencedColumn!.fullName] = entityId;
|
||||
conditions[relation.joinColumns[0].referencedColumn!.databaseName] = entityId;
|
||||
} else {
|
||||
table = relation.inverseEntityMetadata.tableName;
|
||||
values[relation.inverseRelation.name] = relatedEntityId;
|
||||
conditions[relation.inverseRelation.joinColumns[0].referencedColumn!.fullName] = entityId;
|
||||
conditions[relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName] = entityId;
|
||||
}
|
||||
|
||||
|
||||
@ -107,11 +107,11 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
if (relation.isOwning) {
|
||||
table = relation.inverseEntityMetadata.tableName;
|
||||
values[relation.inverseRelation.name] = relatedEntityId;
|
||||
conditions[relation.inverseRelation.joinColumns[0].referencedColumn!.fullName] = entityId;
|
||||
conditions[relation.inverseRelation.joinColumns[0].referencedColumn!.databaseName] = entityId;
|
||||
} else {
|
||||
table = relation.entityMetadata.tableName;
|
||||
values[relation.name] = relatedEntityId;
|
||||
conditions[relation.joinColumns[0].referencedColumn!.fullName] = entityId;
|
||||
conditions[relation.joinColumns[0].referencedColumn!.databaseName] = entityId;
|
||||
}
|
||||
|
||||
const queryRunnerProvider = this.queryRunnerProvider ? this.queryRunnerProvider : new QueryRunnerProvider(this.connection.driver);
|
||||
@ -151,11 +151,11 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
const insertPromises = relatedEntityIds.map(relatedEntityId => {
|
||||
const values: any = {};
|
||||
if (relation.isOwning) {
|
||||
values[relation.junctionEntityMetadata.columns[0].fullName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[1].fullName] = relatedEntityId;
|
||||
values[relation.junctionEntityMetadata.columns[0].databaseName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[1].databaseName] = relatedEntityId;
|
||||
} else {
|
||||
values[relation.junctionEntityMetadata.columns[1].fullName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[0].fullName] = relatedEntityId;
|
||||
values[relation.junctionEntityMetadata.columns[1].databaseName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[0].databaseName] = relatedEntityId;
|
||||
}
|
||||
|
||||
return queryRunner.insert(relation.junctionEntityMetadata.tableName, values);
|
||||
@ -197,11 +197,11 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
const insertPromises = entityIds.map(entityId => {
|
||||
const values: any = {};
|
||||
if (relation.isOwning) {
|
||||
values[relation.junctionEntityMetadata.columns[0].fullName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[1].fullName] = relatedEntityId;
|
||||
values[relation.junctionEntityMetadata.columns[0].databaseName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[1].databaseName] = relatedEntityId;
|
||||
} else {
|
||||
values[relation.junctionEntityMetadata.columns[1].fullName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[0].fullName] = relatedEntityId;
|
||||
values[relation.junctionEntityMetadata.columns[1].databaseName] = entityId;
|
||||
values[relation.junctionEntityMetadata.columns[0].databaseName] = relatedEntityId;
|
||||
}
|
||||
|
||||
return queryRunner.insert(relation.junctionEntityMetadata.tableName, values);
|
||||
@ -247,8 +247,8 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
.delete()
|
||||
.fromTable(relation.junctionEntityMetadata.tableName, "junctionEntity");
|
||||
|
||||
const firstColumnName = this.connection.driver.escapeColumnName(relation.isOwning ? relation.junctionEntityMetadata.columns[0].fullName : relation.junctionEntityMetadata.columns[1].fullName);
|
||||
const secondColumnName = this.connection.driver.escapeColumnName(relation.isOwning ? relation.junctionEntityMetadata.columns[1].fullName : relation.junctionEntityMetadata.columns[0].fullName);
|
||||
const firstColumnName = this.connection.driver.escapeColumnName(relation.isOwning ? relation.junctionEntityMetadata.columns[0].databaseName : relation.junctionEntityMetadata.columns[1].databaseName);
|
||||
const secondColumnName = this.connection.driver.escapeColumnName(relation.isOwning ? relation.junctionEntityMetadata.columns[1].databaseName : relation.junctionEntityMetadata.columns[0].databaseName);
|
||||
|
||||
relatedEntityIds.forEach((relatedEntityId, index) => {
|
||||
qb.orWhere(`(${firstColumnName}=:entityId AND ${secondColumnName}=:relatedEntity_${index})`)
|
||||
@ -293,8 +293,8 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
.delete()
|
||||
.from(relation.junctionEntityMetadata.tableName, "junctionEntity");
|
||||
|
||||
const firstColumnName = relation.isOwning ? relation.junctionEntityMetadata.columns[1].fullName : relation.junctionEntityMetadata.columns[0].fullName;
|
||||
const secondColumnName = relation.isOwning ? relation.junctionEntityMetadata.columns[0].fullName : relation.junctionEntityMetadata.columns[1].fullName;
|
||||
const firstColumnName = relation.isOwning ? relation.junctionEntityMetadata.columns[1].databaseName : relation.junctionEntityMetadata.columns[0].databaseName;
|
||||
const secondColumnName = relation.isOwning ? relation.junctionEntityMetadata.columns[0].databaseName : relation.junctionEntityMetadata.columns[1].databaseName;
|
||||
|
||||
entityIds.forEach((entityId, index) => {
|
||||
qb.orWhere(`(${firstColumnName}=:relatedEntityId AND ${secondColumnName}=:entity_${index})`)
|
||||
@ -422,7 +422,7 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
const entityReferencedColumns = relation.isOwning ? relation.joinColumns.map(joinColumn => joinColumn.referencedColumn!) : relation.inverseRelation.inverseJoinColumns.map(joinColumn => joinColumn.referencedColumn!);
|
||||
const ownerEntityColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation.inverseJoinColumns;
|
||||
const inverseEntityColumns = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation.joinColumns;
|
||||
const inverseEntityColumnNames = relation.isOwning ? relation.inverseJoinColumns.map(joinColumn => joinColumn.name) : relation.inverseRelation.joinColumns.map(joinColumn => joinColumn.name);
|
||||
const inverseEntityColumnNames = relation.isOwning ? relation.inverseJoinColumns.map(joinColumn => joinColumn.databaseName) : relation.inverseRelation.joinColumns.map(joinColumn => joinColumn.databaseName);
|
||||
|
||||
let entityIds = this.convertEntityOrEntitiesToIdOrIds(entityReferencedColumns, entityOrEntities);
|
||||
if (!(entityIds instanceof Array)) entityIds = [entityIds];
|
||||
@ -446,8 +446,8 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
});
|
||||
qb.fromTable(relation.junctionEntityMetadata.tableName, "junction");
|
||||
Object.keys(entityId).forEach((columnName) => {
|
||||
const junctionColumnName = ownerEntityColumns.find(joinColumn => joinColumn.referencedColumn!.name === columnName);
|
||||
qb.andWhere(ea("junction") + "." + ec(junctionColumnName!.name) + "=:" + junctionColumnName!.name + "_entityId", {[junctionColumnName!.name + "_entityId"]: entityId[columnName]});
|
||||
const junctionColumnName = ownerEntityColumns.find(joinColumn => joinColumn.referencedColumn!.databaseName === columnName);
|
||||
qb.andWhere(ea("junction") + "." + ec(junctionColumnName!.databaseName) + "=:" + junctionColumnName!.databaseName + "_entityId", {[junctionColumnName!.databaseName + "_entityId"]: entityId[columnName]});
|
||||
});
|
||||
// ownerEntityColumnNames.forEach(columnName => {
|
||||
// qb.andWhere(ea("junction") + "." + ec(columnName) + "=:" + columnName + "_entityId", {[columnName + "_entityId"]: entityId});
|
||||
@ -464,7 +464,7 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
.then((results: any[]) => {
|
||||
results.forEach(result => {
|
||||
ids.push(Object.keys(result).reduce((id, key) => {
|
||||
const junctionColumnName = inverseEntityColumns.find(joinColumn => joinColumn.name === key)!;
|
||||
const junctionColumnName = inverseEntityColumns.find(joinColumn => joinColumn.databaseName === key)!;
|
||||
id[junctionColumnName.referencedColumn!.propertyName] = result[key];
|
||||
return id;
|
||||
}, {} as ObjectLiteral));
|
||||
@ -490,7 +490,7 @@ export class SpecificRepository<Entity extends ObjectLiteral> {
|
||||
} else {
|
||||
if (entityOrEntities instanceof Object) {
|
||||
return columns.reduce((ids, column) => {
|
||||
ids[column.name] = entityOrEntities[column.propertyName];
|
||||
ids[column.databaseName] = entityOrEntities[column.propertyName];
|
||||
return ids;
|
||||
}, {} as ObjectLiteral);
|
||||
} else {
|
||||
|
||||
@ -47,7 +47,7 @@ export class TreeRepository<Entity> extends Repository<Entity> {
|
||||
const escapeAlias = (alias: string) => this.connection.driver.escapeAliasName(alias);
|
||||
const escapeColumn = (column: string) => this.connection.driver.escapeColumnName(column);
|
||||
|
||||
const joinCondition = `${escapeAlias(alias)}.${escapeColumn(this.metadata.firstPrimaryColumn.fullName)}=${escapeAlias(closureTableAlias)}.${escapeColumn("descendant")}`;
|
||||
const joinCondition = `${escapeAlias(alias)}.${escapeColumn(this.metadata.firstPrimaryColumn.databaseName)}=${escapeAlias(closureTableAlias)}.${escapeColumn("descendant")}`;
|
||||
return this.createQueryBuilder(alias)
|
||||
.innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)
|
||||
.where(`${escapeAlias(closureTableAlias)}.${escapeColumn("ancestor")}=${this.metadata.getEntityIdMap(entity)![this.metadata.firstPrimaryColumn.propertyName]}`);
|
||||
@ -95,7 +95,7 @@ export class TreeRepository<Entity> extends Repository<Entity> {
|
||||
const escapeAlias = (alias: string) => this.connection.driver.escapeAliasName(alias);
|
||||
const escapeColumn = (column: string) => this.connection.driver.escapeColumnName(column);
|
||||
|
||||
const joinCondition = `${escapeAlias(alias)}.${escapeColumn(this.metadata.firstPrimaryColumn.fullName)}=${escapeAlias(closureTableAlias)}.${escapeColumn("ancestor")}`;
|
||||
const joinCondition = `${escapeAlias(alias)}.${escapeColumn(this.metadata.firstPrimaryColumn.databaseName)}=${escapeAlias(closureTableAlias)}.${escapeColumn("ancestor")}`;
|
||||
return this.createQueryBuilder(alias)
|
||||
.innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)
|
||||
.where(`${escapeAlias(closureTableAlias)}.${escapeColumn("descendant")}=${this.metadata.getEntityIdMap(entity)![this.metadata.firstPrimaryColumn.propertyName]}`);
|
||||
@ -148,7 +148,7 @@ export class TreeRepository<Entity> extends Repository<Entity> {
|
||||
protected createRelationMaps(alias: string, rawResults: any[]): { id: any, parentId: any }[] {
|
||||
return rawResults.map(rawResult => {
|
||||
return {
|
||||
id: rawResult[alias + "_" + this.metadata.firstPrimaryColumn.fullName],
|
||||
id: rawResult[alias + "_" + this.metadata.firstPrimaryColumn.databaseName],
|
||||
parentId: rawResult[alias + "_" + this.metadata.treeParentRelation.name]
|
||||
};
|
||||
});
|
||||
|
||||
@ -164,7 +164,7 @@ export class SchemaBuilder {
|
||||
|
||||
// find columns that exist in the database but does not exist in the metadata
|
||||
const droppedColumnSchemas = tableSchema.columns.filter(columnSchema => {
|
||||
return !metadata.columns.find(columnMetadata => columnMetadata.fullName === columnSchema.name);
|
||||
return !metadata.columns.find(columnMetadata => columnMetadata.databaseName === columnSchema.name);
|
||||
});
|
||||
if (droppedColumnSchemas.length === 0)
|
||||
return;
|
||||
@ -202,12 +202,12 @@ export class SchemaBuilder {
|
||||
|
||||
// find which columns are new
|
||||
const newColumnMetadatas = metadata.columns.filter(columnMetadata => {
|
||||
return !tableSchema.columns.find(columnSchema => columnSchema.name === columnMetadata.fullName);
|
||||
return !tableSchema.columns.find(columnSchema => columnSchema.name === columnMetadata.databaseName);
|
||||
});
|
||||
if (newColumnMetadatas.length === 0)
|
||||
return;
|
||||
|
||||
this.logger.logSchemaBuild(`new columns added: ` + newColumnMetadatas.map(column => column.fullName).join(", "));
|
||||
this.logger.logSchemaBuild(`new columns added: ` + newColumnMetadatas.map(column => column.databaseName).join(", "));
|
||||
|
||||
// create columns in the database
|
||||
const newColumnSchemas = this.metadataColumnsToColumnSchemas(newColumnMetadatas);
|
||||
@ -234,7 +234,7 @@ export class SchemaBuilder {
|
||||
|
||||
// drop all foreign keys that point to this column
|
||||
const dropRelatedForeignKeysPromises = updatedColumnSchemas
|
||||
.filter(changedColumnSchema => !!metadata.columns.find(columnMetadata => columnMetadata.fullName === changedColumnSchema.name))
|
||||
.filter(changedColumnSchema => !!metadata.columns.find(columnMetadata => columnMetadata.databaseName === changedColumnSchema.name))
|
||||
.map(changedColumnSchema => this.dropColumnReferencedForeignKeys(metadata.tableName, changedColumnSchema.name));
|
||||
|
||||
// wait until all related foreign keys are dropped
|
||||
@ -242,7 +242,7 @@ export class SchemaBuilder {
|
||||
|
||||
// drop all indices that point to this column
|
||||
const dropRelatedIndicesPromises = updatedColumnSchemas
|
||||
.filter(changedColumnSchema => !!metadata.columns.find(columnMetadata => columnMetadata.fullName === changedColumnSchema.name))
|
||||
.filter(changedColumnSchema => !!metadata.columns.find(columnMetadata => columnMetadata.databaseName === changedColumnSchema.name))
|
||||
.map(changedColumnSchema => this.dropColumnReferencedIndices(metadata.tableName, changedColumnSchema.name));
|
||||
|
||||
// wait until all related indices are dropped
|
||||
@ -250,7 +250,7 @@ export class SchemaBuilder {
|
||||
|
||||
// generate a map of new/old columns
|
||||
const newAndOldColumnSchemas = updatedColumnSchemas.map(changedColumnSchema => {
|
||||
const columnMetadata = metadata.columns.find(column => column.fullName === changedColumnSchema.name);
|
||||
const columnMetadata = metadata.columns.find(column => column.databaseName === changedColumnSchema.name);
|
||||
const newColumnSchema = ColumnSchema.create(columnMetadata!, this.queryRunner.normalizeType(columnMetadata!));
|
||||
tableSchema.replaceColumn(changedColumnSchema, newColumnSchema);
|
||||
|
||||
@ -276,12 +276,12 @@ export class SchemaBuilder {
|
||||
const metadataPrimaryColumns = metadata.columns.filter(column => column.isPrimary && !column.isGenerated);
|
||||
const addedKeys = metadataPrimaryColumns
|
||||
.filter(primaryKey => {
|
||||
return !tableSchema.primaryKeysWithoutGenerated.find(dbPrimaryKey => dbPrimaryKey.columnName === primaryKey.fullName);
|
||||
return !tableSchema.primaryKeysWithoutGenerated.find(dbPrimaryKey => dbPrimaryKey.columnName === primaryKey.databaseName);
|
||||
})
|
||||
.map(primaryKey => new PrimaryKeySchema("", primaryKey.fullName));
|
||||
.map(primaryKey => new PrimaryKeySchema("", primaryKey.databaseName));
|
||||
|
||||
const droppedKeys = tableSchema.primaryKeysWithoutGenerated.filter(primaryKeySchema => {
|
||||
return !metadataPrimaryColumns.find(primaryKeyMetadata => primaryKeyMetadata.fullName === primaryKeySchema.columnName);
|
||||
return !metadataPrimaryColumns.find(primaryKeyMetadata => primaryKeyMetadata.databaseName === primaryKeySchema.columnName);
|
||||
});
|
||||
|
||||
if (addedKeys.length === 0 && droppedKeys.length === 0)
|
||||
@ -405,11 +405,11 @@ export class SchemaBuilder {
|
||||
const dependForeignKeys = allForeignKeyMetadatas.filter(foreignKey => {
|
||||
if (foreignKey.tableName === tableName) {
|
||||
return !!foreignKey.columns.find(fkColumn => {
|
||||
return fkColumn.fullName === columnName;
|
||||
return fkColumn.databaseName === columnName;
|
||||
});
|
||||
} else if (foreignKey.referencedTableName === tableName) {
|
||||
return !!foreignKey.referencedColumns.find(fkColumn => {
|
||||
return fkColumn.fullName === columnName;
|
||||
return fkColumn.databaseName === columnName;
|
||||
});
|
||||
}
|
||||
return false;
|
||||
|
||||
@ -104,7 +104,7 @@ export class ColumnSchema {
|
||||
*/
|
||||
static create(columnMetadata: ColumnMetadata, normalizedType: string): ColumnSchema {
|
||||
const columnSchema = new ColumnSchema();
|
||||
columnSchema.name = columnMetadata.fullName;
|
||||
columnSchema.name = columnMetadata.databaseName;
|
||||
columnSchema.default = columnMetadata.default;
|
||||
columnSchema.comment = columnMetadata.comment;
|
||||
columnSchema.isGenerated = columnMetadata.isGenerated;
|
||||
|
||||
@ -198,11 +198,11 @@ export class TableSchema {
|
||||
*/
|
||||
findChangedColumns(queryRunner: QueryRunner, columnMetadatas: ColumnMetadata[]): ColumnSchema[] {
|
||||
return this.columns.filter(columnSchema => {
|
||||
const columnMetadata = columnMetadatas.find(columnMetadata => columnMetadata.fullName === columnSchema.name);
|
||||
const columnMetadata = columnMetadatas.find(columnMetadata => columnMetadata.databaseName === columnSchema.name);
|
||||
if (!columnMetadata)
|
||||
return false; // we don't need new columns, we only need exist and changed
|
||||
|
||||
return columnSchema.name !== columnMetadata.fullName ||
|
||||
return columnSchema.name !== columnMetadata.databaseName ||
|
||||
columnSchema.type !== queryRunner.normalizeType(columnMetadata) ||
|
||||
columnSchema.comment !== columnMetadata.comment ||
|
||||
(!columnSchema.isGenerated && !queryRunner.compareDefaultValues(columnMetadata.default, columnSchema.default)) || // we included check for generated here, because generated columns already can have default values
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user