diff --git a/src/drivers/MariaDbDriver.ts b/src/drivers/MariaDbDriver.ts index d8d2222..eb922ac 100644 --- a/src/drivers/MariaDbDriver.ts +++ b/src/drivers/MariaDbDriver.ts @@ -287,18 +287,29 @@ export class MariaDbDriver extends AbstractDriver { isOneToMany = false; } let ownerRelation = new RelationInfo() + let columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length>0){ + for (let i=2;i<=10;i++){ + columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '')+i.toString(); + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length==0) break; + } + } ownerRelation.actionOnDelete = relationTmp.actionOnDelete ownerRelation.actionOnUpdate = relationTmp.actionOnUpdate ownerRelation.isOwner = true ownerRelation.relatedColumn = relatedColumn.name.toLowerCase() ownerRelation.relatedTable = relationTmp.referencedTable ownerRelation.ownerTable = relationTmp.ownerTable - ownerRelation.ownerColumn = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + ownerRelation.ownerColumn = columnName ownerRelation.relationType = isOneToMany ? "ManyToOne" : "OneToOne" ownerColumn.relations.push(ownerRelation) if (isOneToMany) { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + 's' + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionOnDelete = relationTmp.actionOnDelete @@ -312,7 +323,7 @@ export class MariaDbDriver extends AbstractDriver { referencedEntity.Columns.push(col) } else { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionOnDelete = relationTmp.actionOnDelete diff --git a/src/drivers/MssqlDriver.ts b/src/drivers/MssqlDriver.ts index 9d946bc..bcae776 100644 --- a/src/drivers/MssqlDriver.ts +++ b/src/drivers/MssqlDriver.ts @@ -359,18 +359,29 @@ order by isOneToMany = false; } let ownerRelation = new RelationInfo() + let columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length>0){ + for (let i=2;i<=10;i++){ + columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '')+i.toString(); + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length==0) break; + } + } ownerRelation.actionOnDelete = relationTmp.actionOnDelete ownerRelation.actionOnUpdate = relationTmp.actionOnUpdate ownerRelation.isOwner = true ownerRelation.relatedColumn = relatedColumn.name.toLowerCase() ownerRelation.relatedTable = relationTmp.referencedTable ownerRelation.ownerTable = relationTmp.ownerTable - ownerRelation.ownerColumn = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + ownerRelation.ownerColumn = columnName ownerRelation.relationType = isOneToMany ? "ManyToOne" : "OneToOne" ownerColumn.relations.push(ownerRelation) if (isOneToMany) { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + 's' + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionOnDelete = relationTmp.actionOnDelete @@ -384,7 +395,7 @@ order by referencedEntity.Columns.push(col) } else { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionOnDelete = relationTmp.actionOnDelete diff --git a/src/drivers/MysqlDriver.ts b/src/drivers/MysqlDriver.ts index 6e33612..dc4a95a 100644 --- a/src/drivers/MysqlDriver.ts +++ b/src/drivers/MysqlDriver.ts @@ -287,18 +287,29 @@ export class MysqlDriver extends AbstractDriver { isOneToMany = false; } let ownerRelation = new RelationInfo() + let columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length>0){ + for (let i=2;i<=10;i++){ + columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '')+i.toString(); + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length==0) break; + } + } ownerRelation.actionOnDelete = relationTmp.actionOnDelete ownerRelation.actionOnUpdate = relationTmp.actionOnUpdate ownerRelation.isOwner = true ownerRelation.relatedColumn = relatedColumn.name.toLowerCase() ownerRelation.relatedTable = relationTmp.referencedTable ownerRelation.ownerTable = relationTmp.ownerTable - ownerRelation.ownerColumn = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + ownerRelation.ownerColumn =columnName ownerRelation.relationType = isOneToMany ? "ManyToOne" : "OneToOne" ownerColumn.relations.push(ownerRelation) if (isOneToMany) { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + 's' + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionOnDelete = relationTmp.actionOnDelete @@ -312,7 +323,7 @@ export class MysqlDriver extends AbstractDriver { referencedEntity.Columns.push(col) } else { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionOnDelete = relationTmp.actionOnDelete diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index ef37425..1687dc4 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -388,18 +388,29 @@ export class PostgresDriver extends AbstractDriver { isOneToMany = false; } let ownerRelation = new RelationInfo() + let columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length>0){ + for (let i=2;i<=10;i++){ + columnName = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '')+i.toString(); + if (referencedEntity.Columns.filter((filterVal) => { + return filterVal.name == columnName; + }).length==0) break; + } + } ownerRelation.actionOnDelete = relationTmp.actionOnDelete ownerRelation.actionOnUpdate = relationTmp.actionOnUpdate ownerRelation.isOwner = true ownerRelation.relatedColumn = relatedColumn.name.toLowerCase() ownerRelation.relatedTable = relationTmp.referencedTable ownerRelation.ownerTable = relationTmp.ownerTable - ownerRelation.ownerColumn = ownerEntity.EntityName.toLowerCase() + (isOneToMany ? 's' : '') + ownerRelation.ownerColumn = columnName ownerRelation.relationType = isOneToMany ? "ManyToOne" : "OneToOne" ownerColumn.relations.push(ownerRelation) if (isOneToMany) { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + 's' + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionondelete = relationTmp.actionOnDelete @@ -413,7 +424,7 @@ export class PostgresDriver extends AbstractDriver { referencedEntity.Columns.push(col) } else { let col = new ColumnInfo() - col.name = ownerEntity.EntityName.toLowerCase() + col.name = columnName let referencedRelation = new RelationInfo(); col.relations.push(referencedRelation) referencedRelation.actionondelete = relationTmp.actionOnDelete diff --git a/test/integration/entityTypes.test.ts b/test/integration/entityTypes.test.ts index 89bfdd6..0f9c1fb 100644 --- a/test/integration/entityTypes.test.ts +++ b/test/integration/entityTypes.test.ts @@ -30,7 +30,6 @@ describe("platform specyfic types", async function () { for (let folder of files) { - describe(folder, async function () { for (let dbDriver of dbDrivers) { if (dbDriver == folder) { it(dbDriver, async function () { @@ -94,6 +93,5 @@ describe("platform specyfic types", async function () { }); } } - }) } })