one more test

This commit is contained in:
Kononnable 2019-10-08 20:35:07 +02:00
parent 24fe4cf48c
commit 102ff614f6
7 changed files with 38 additions and 44 deletions

View File

@ -516,8 +516,8 @@ function applyNamingStrategy(
oldName
);
entity.indices.forEach(index => {
index.columns.map(column2 =>
column2 === column.tscName ? newName : column2
index.columns = index.columns.map(column2 =>
column2 === oldName ? newName : column2
);
});

View File

@ -1,6 +1,7 @@
import AbstractNamingStrategy from "./AbstractNamingStrategy";
import { Relation } from "./models/Relation";
import { Entity } from "./models/Entity";
import { findNameForNewField } from "./Utils";
import changeCase = require("change-case");
@ -8,10 +9,13 @@ import changeCase = require("change-case");
export default class NamingStrategy extends AbstractNamingStrategy {
public relationName(relation: Relation, owner: Entity): string {
const columnOldName = relation.fieldName;
const isRelationToMany =
relation.relationType === "OneToMany" ||
relation.relationType === "ManyToMany";
let columnName = changeCase.camelCase(columnOldName);
let columnName = changeCase.camelCase(
columnOldName.replace(/[0-9]$/, "")
);
if (
columnName.toLowerCase().endsWith("id") &&
@ -34,25 +38,7 @@ export default class NamingStrategy extends AbstractNamingStrategy {
relation.relationType !== "ManyToMany" &&
columnOldName !== columnName
) {
if (owner.columns.some(v => v.tscName === columnName)) {
columnName += "_";
for (let i = 2; i <= owner.columns.length; i++) {
columnName =
columnName.substring(
0,
columnName.length - i.toString().length
) + i.toString();
if (
owner.columns.every(
v =>
v.tscName !== columnName ||
columnName === columnOldName
)
) {
break;
}
}
}
columnName = findNameForNewField(columnName, owner, columnOldName);
}
return columnName;

View File

@ -32,9 +32,14 @@ export function findNameForNewField(
) {
let fieldName = _fieldName;
const validNameCondition = () =>
(entity.columns.every(v => v.tscName !== fieldName) &&
entity.relations.every(v => v.fieldName !== fieldName)) ||
(columnOldName && columnOldName === fieldName);
(entity.columns.every(
v => v.tscName.toLowerCase() !== fieldName.toLowerCase()
) &&
entity.relations.every(
v => v.fieldName.toLowerCase() !== fieldName.toLowerCase()
)) ||
(columnOldName &&
columnOldName.toLowerCase() === fieldName.toLowerCase());
if (!validNameCondition()) {
fieldName += "_";
for (

View File

@ -1,5 +1,5 @@
{{#*inline "Index"}}
@Index("{{name}}",[{{#columns}}"{{.}}",{{/columns~}}],{ {{json options}} })
@Index("{{name}}",[{{#columns}}"{{toPropertyName .}}",{{/columns~}}],{ {{json options}} })
{{/inline}}
{{#*inline "Import"}}
import { {{toEntityName .}} } from './{{toFileName .}}'

View File

@ -18,26 +18,29 @@ import { quests } from "./quests";
@Index("feedExtraInfo_ReaderId_idx", ["readerId"], { unique: true })
@Index("feedExtraInfo_QuestId_idx", ["questId"], { unique: true })
export class feedextrainfo {
@OneToOne(type => users, FeedOwnerId => FeedOwnerId.feedextrainfo, {
primary: true
})
@PrimaryColumn({ name: "FeedOwnerId" })
feedOwnerId: number;
@PrimaryColumn({ name: "QuestId" })
questId: number;
@PrimaryColumn({ name: "ReaderId" })
readerId: number;
@OneToOne(type => users, FeedOwnerId => FeedOwnerId.feedextrainfo)
@JoinColumn({ name: "FeedOwnerId" })
feedOwnerId: users;
feedOwner: users;
@OneToOne(type => quests, QuestId => QuestId.feedextrainfo, {
primary: true
})
@OneToOne(type => quests, QuestId => QuestId.feedextrainfo)
@JoinColumn({ name: "QuestId" })
questId: quests;
quest: quests;
@OneToOne(type => users, ReaderId => ReaderId.feedextrainfo2, {
primary: true
})
@OneToOne(type => users, ReaderId => ReaderId.feedextrainfo2)
@JoinColumn({ name: "ReaderId" })
readerId: users;
reader: users;
@Column("int", {
name: "MostUpdatedFeedEntryIdUserRead"
})
MostUpdatedFeedEntryIdUserRead: number;
mostUpdatedFeedEntryIdUserRead: number;
}

View File

@ -18,8 +18,8 @@ export class quests {
primary: true,
name: "QuestId"
})
QuestId: number;
questId: number;
@OneToOne(type => feedextrainfo, feedextrainfo => feedextrainfo.questId)
@OneToOne(type => feedextrainfo, feedextrainfo => feedextrainfo.quest)
feedextrainfo: feedextrainfo;
}

View File

@ -18,11 +18,11 @@ export class users {
primary: true,
name: "UserId"
})
UserId: number;
userId: number;
@OneToOne(type => feedextrainfo, feedextrainfo => feedextrainfo.feedOwnerId)
@OneToOne(type => feedextrainfo, feedextrainfo => feedextrainfo.feedOwner)
feedextrainfo: feedextrainfo;
@OneToOne(type => feedextrainfo, feedextrainfo2 => feedextrainfo2.readerId)
@OneToOne(type => feedextrainfo, feedextrainfo2 => feedextrainfo2.reader)
feedextrainfo2: feedextrainfo;
}