fixed bugs with naming tables

This commit is contained in:
Umed Khudoiberdiev 2016-05-04 19:12:03 +05:00
parent 6856af143d
commit 2e9febf212
5 changed files with 67 additions and 13 deletions

View File

@ -1,7 +1,7 @@
{
"name": "typeorm",
"private": true,
"version": "0.0.2-alpha.10",
"version": "0.0.2-alpha.11",
"description": "Data-mapper ORM for Typescript",
"license": "Apache-2.0",
"readmeFilename": "README.md",

View File

@ -31,12 +31,25 @@ export class CustomNamingStrategy implements NamingStrategyInterface {
return propertyName;
}
joinTableName(firstTableName: string, secondTableName: string, firstColumnName: string, secondColumnName: string): string {
return firstTableName + "_" + firstColumnName + "_" + secondTableName + "_" + secondColumnName;
joinTableName(firstTableName: string,
secondTableName: string,
firstColumnName: string,
secondColumnName: string,
firstPropertyName: string,
secondPropertyName: string): string {
return _.snakeCase(firstTableName + "_" + firstColumnName + "_" + secondTableName + "_" + secondPropertyName);
}
joinTableColumnName(tableName: string, columnName: string): string {
return tableName + "_" + columnName;
joinTableColumnName(tableName: string, columnName: string, secondTableName: string, secondColumnName: string): string {
const column1 = tableName + "_" + columnName;
const column2 = secondTableName + "_" + secondColumnName;
return column1 === column2 ? column1 + "_1" : column1;
}
joinTableInverseColumnName(tableName: string, columnName: string, secondTableName: string, secondColumnName: string): string {
const column1 = tableName + "_" + columnName;
const column2 = secondTableName + "_" + secondColumnName;
return column1 === column2 ? column1 + "_2" : column1;
}
}

View File

@ -84,6 +84,8 @@ export class JoinTableMetadata extends PropertyMetadata {
return this.relation.entityMetadata.namingStrategy.joinTableName(
this.relation.entityMetadata.table.name,
this.relation.inverseEntityMetadata.table.name,
this.relation.name,
this.relation.hasInverseSide ? this.relation.inverseRelation.name : "",
this.referencedColumn.name,
this.inverseReferencedColumn.name
);
@ -96,7 +98,15 @@ export class JoinTableMetadata extends PropertyMetadata {
if (this._joinColumnName)
return this._joinColumnName;
return this.relation.entityMetadata.namingStrategy.joinTableColumnName(this.relation.entityMetadata.table.name, this.referencedColumn.name);
return this.relation
.entityMetadata
.namingStrategy
.joinTableColumnName(
this.relation.entityMetadata.table.name,
this.referencedColumn.name,
this.relation.inverseEntityMetadata.table.name,
this.inverseReferencedColumn.name
);
}
/**
@ -106,7 +116,15 @@ export class JoinTableMetadata extends PropertyMetadata {
if (this._inverseJoinColumnName)
return this._inverseJoinColumnName;
return this.relation.entityMetadata.namingStrategy.joinTableColumnName(this.relation.inverseEntityMetadata.table.name, this.inverseReferencedColumn.name);
return this.relation
.entityMetadata
.namingStrategy
.joinTableInverseColumnName(
this.relation.inverseEntityMetadata.table.name,
this.inverseReferencedColumn.name,
this.relation.entityMetadata.table.name,
this.referencedColumn.name
);
}
/**

View File

@ -32,12 +32,25 @@ export class DefaultNamingStrategy implements NamingStrategyInterface {
return propertyName;
}
joinTableName(firstTableName: string, secondTableName: string, firstColumnName: string, secondColumnName: string): string {
return firstTableName + "_" + firstColumnName + "_" + secondTableName + "_" + secondColumnName;
joinTableName(firstTableName: string,
secondTableName: string,
firstColumnName: string,
secondColumnName: string,
firstPropertyName: string,
secondPropertyName: string): string {
return _.snakeCase(firstTableName + "_" + firstColumnName + "_" + secondTableName + "_" + secondPropertyName);
}
joinTableColumnName(tableName: string, columnName: string): string {
return tableName + "_" + columnName;
joinTableColumnName(tableName: string, columnName: string, secondTableName: string, secondColumnName: string): string {
const column1 = tableName + "_" + columnName;
const column2 = secondTableName + "_" + secondColumnName;
return column1 === column2 ? column1 + "_1" : column1;
}
joinTableInverseColumnName(tableName: string, columnName: string, secondTableName: string, secondColumnName: string): string {
const column1 = tableName + "_" + columnName;
const column2 = secondTableName + "_" + secondColumnName;
return column1 === column2 ? column1 + "_2" : column1;
}
}

View File

@ -32,11 +32,21 @@ export interface NamingStrategyInterface {
/**
* Gets the name of the join table used in the many-to-many relations.
*/
joinTableName(firstTableName: string, secondTableName: string, firstColumnName: string, secondColumnName: string): string;
joinTableName(firstTableName: string,
secondTableName: string,
firstColumnName: string,
secondColumnName: string,
firstPropertyName: string,
secondPropertyName: string): string;
/**
* Gets the name of the column used for columns in the junction tables.
*/
joinTableColumnName(tableName: string, columnName: string): string;
joinTableColumnName(tableName: string, columnName: string, secondTableName: string, secondColumnName: string): string;
/**
* Gets the name of the column used for second column name in the junction tables.
*/
joinTableInverseColumnName(tableName: string, columnName: string, secondTableName: string, secondColumnName: string): string;
}