From 15b62916065b030e81dc698e4eeae14eab330ce0 Mon Sep 17 00:00:00 2001 From: Kononnable Date: Sat, 12 Oct 2019 10:24:43 +0200 Subject: [PATCH] code cleanup --- src/Engine.ts | 17 +--- src/drivers/AbstractDriver.ts | 2 - src/oldModels/ColumnInfo.ts | 22 ------ src/oldModels/EntityInfo.ts | 38 --------- src/oldModels/IndexColumnInfo.ts | 3 - src/oldModels/IndexInfo.ts | 8 -- src/oldModels/RelationInfo.ts | 46 ----------- src/oldModels/RelationTempInfo.ts | 15 ---- test/drivers/MssqlDriver.test.ts | 78 ++++++++++--------- .../{feedextrainfo.ts => Feedextrainfo.ts} | 18 ++--- .../58/entity/{quests.ts => Quests.ts} | 8 +- .../58/entity/{users.ts => Users.ts} | 12 +-- test/utils/GeneralTestUtils.ts | 4 +- 13 files changed, 62 insertions(+), 209 deletions(-) delete mode 100644 src/oldModels/ColumnInfo.ts delete mode 100644 src/oldModels/EntityInfo.ts delete mode 100644 src/oldModels/IndexColumnInfo.ts delete mode 100644 src/oldModels/IndexInfo.ts delete mode 100644 src/oldModels/RelationInfo.ts delete mode 100644 src/oldModels/RelationTempInfo.ts rename test/integration/github-issues/58/entity/{feedextrainfo.ts => Feedextrainfo.ts} (70%) rename test/integration/github-issues/58/entity/{quests.ts => Quests.ts} (63%) rename test/integration/github-issues/58/entity/{users.ts => Users.ts} (54%) diff --git a/src/Engine.ts b/src/Engine.ts index 1dba8e0..04e749b 100644 --- a/src/Engine.ts +++ b/src/Engine.ts @@ -148,8 +148,7 @@ export function modelCustomizationPhase( } else { namingStrategy = new NamingStrategy(); } - let retVal = setRelationId(generationOptions, dbModel); - retVal = applyNamingStrategy(namingStrategy, retVal); + let retVal = applyNamingStrategy(namingStrategy, dbModel); retVal = addImportsAndGenerationOptions(retVal, generationOptions); retVal = removeColumnDefaultProperties(retVal, defaultValues); return retVal; @@ -216,19 +215,6 @@ function addImportsAndGenerationOptions( return dbModel; } -function setRelationId(generationOptions: IGenerationOptions, model: Entity[]) { - // TODO: - // if (generationOptions.relationIds) { - // model.forEach(ent => { - // ent.columns.forEach(col => { - // col.relations.forEach(rel => { - // rel.relationIdField = rel.isOwner; - // }); - // }); - // }); - // } - return model; -} export function modelGenerationPhase( connectionOptions: IConnectionOptions, generationOptions: IGenerationOptions, @@ -478,7 +464,6 @@ function applyNamingStrategy( return retval; function changeRelationIdNames(model: Entity[]) { - // TODO: model.forEach(entity => { entity.relationIds.forEach(relationId => { const oldName = relationId.fieldName; diff --git a/src/drivers/AbstractDriver.ts b/src/drivers/AbstractDriver.ts index 7ea68ed..501de28 100644 --- a/src/drivers/AbstractDriver.ts +++ b/src/drivers/AbstractDriver.ts @@ -315,7 +315,6 @@ export default abstract class AbstractDriver { ); isOneToMany = !index; - // TODO: RelationId ownerEntity.columns = ownerEntity.columns.filter( v => !relationTmp.ownerColumns.some(u => u === v.tscName) || @@ -367,7 +366,6 @@ export default abstract class AbstractDriver { fieldName: ownerRelation.relatedField, relatedField: ownerRelation.fieldName, relatedTable: relationTmp.ownerTable.tscName, - // relationOptions: ownerRelation.relationOptions, relationType: isOneToMany ? "OneToMany" : "OneToOne" }; diff --git a/src/oldModels/ColumnInfo.ts b/src/oldModels/ColumnInfo.ts deleted file mode 100644 index b373c99..0000000 --- a/src/oldModels/ColumnInfo.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ColumnOptions } from "typeorm"; -import RelationInfo from "./RelationInfo"; - -export default class ColumnInfo { - public options: ColumnOptions = {}; - - public tsName: string = ""; - - public tsType: - | "number" - | "string" - | "boolean" - | "Date" - | "Buffer" - | "object" - | "string | object" - | "string | string[]" - | "any" - | string; - - public relations: RelationInfo[] = []; -} diff --git a/src/oldModels/EntityInfo.ts b/src/oldModels/EntityInfo.ts deleted file mode 100644 index b1cf4a7..0000000 --- a/src/oldModels/EntityInfo.ts +++ /dev/null @@ -1,38 +0,0 @@ -import ColumnInfo from "./ColumnInfo"; -import IndexInfo from "./IndexInfo"; - -export default class EntityInfo { - public tsEntityName: string; - - public sqlEntityName: string; - - public Columns: ColumnInfo[]; - - public Imports: string[]; - - public UniqueImports: string[]; - - public Indexes: IndexInfo[]; - - public Schema?: string; - - public GenerateConstructor: boolean; - - public IsActiveRecord: boolean; - - public Database?: string; - - public relationImports() { - const imports: string[] = []; - this.Columns.forEach(column => { - column.relations.forEach(relation => { - if (this.tsEntityName !== relation.relatedTable) { - imports.push(relation.relatedTable); - } - }); - }); - this.UniqueImports = imports.filter( - (elem, index, self) => index === self.indexOf(elem) - ); - } -} diff --git a/src/oldModels/IndexColumnInfo.ts b/src/oldModels/IndexColumnInfo.ts deleted file mode 100644 index f4fa605..0000000 --- a/src/oldModels/IndexColumnInfo.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default interface IndexColumnInfo { - name: string; -} diff --git a/src/oldModels/IndexInfo.ts b/src/oldModels/IndexInfo.ts deleted file mode 100644 index ac94f15..0000000 --- a/src/oldModels/IndexInfo.ts +++ /dev/null @@ -1,8 +0,0 @@ -import IndexColumnInfo from "./IndexColumnInfo"; - -export default interface IndexInfo { - name: string; - columns: IndexColumnInfo[]; - isUnique: boolean; - isPrimaryKey: boolean; -} diff --git a/src/oldModels/RelationInfo.ts b/src/oldModels/RelationInfo.ts deleted file mode 100644 index efaa10e..0000000 --- a/src/oldModels/RelationInfo.ts +++ /dev/null @@ -1,46 +0,0 @@ -export default class RelationInfo { - public isOwner: boolean; - - public relationType: "OneToOne" | "OneToMany" | "ManyToOne" | "ManyToMany"; - - public relatedTable: string; - - public relatedColumn: string; - - public ownerTable: string; - - public ownerColumn: string; - - public actionOnDelete: - | "RESTRICT" - | "CASCADE" - | "SET NULL" - | "DEFAULT" - | "NO ACTION" - | null; - - public actionOnUpdate: - | "RESTRICT" - | "CASCADE" - | "SET NULL" - | "DEFAULT" - | null; - - public relationIdField: boolean = false; - - public get isOneToMany(): boolean { - return this.relationType === "OneToMany"; - } - - public get isManyToMany(): boolean { - return this.relationType === "ManyToMany"; - } - - public get isOneToOne(): boolean { - return this.relationType === "OneToOne"; - } - - public get isManyToOne(): boolean { - return this.relationType === "ManyToOne"; - } -} diff --git a/src/oldModels/RelationTempInfo.ts b/src/oldModels/RelationTempInfo.ts deleted file mode 100644 index f6914f8..0000000 --- a/src/oldModels/RelationTempInfo.ts +++ /dev/null @@ -1,15 +0,0 @@ -export default interface RelationTempInfo { - ownerTable: string; - ownerColumnsNames: string[]; - referencedTable: string; - referencedColumnsNames: string[]; - actionOnDelete: - | "RESTRICT" - | "CASCADE" - | "SET NULL" - | "DEFAULT" - | "NO ACTION" - | null; - actionOnUpdate: "RESTRICT" | "CASCADE" | "SET NULL" | "DEFAULT" | null; - objectId: number | string; -} diff --git a/test/drivers/MssqlDriver.test.ts b/test/drivers/MssqlDriver.test.ts index 5c815b9..b3a6380 100644 --- a/test/drivers/MssqlDriver.test.ts +++ b/test/drivers/MssqlDriver.test.ts @@ -2,10 +2,7 @@ import { expect } from "chai"; import * as MSSQL from "mssql"; import * as Sinon from "sinon"; import MssqlDriver from "../../src/drivers/MssqlDriver"; -import EntityInfo from "../../src/oldModels/EntityInfo"; -import ColumnInfo from "../../src/oldModels/ColumnInfo"; -import IndexInfo from "../../src/oldModels/IndexInfo"; -import RelationInfo from "../../src/oldModels/RelationInfo"; +import { Entity } from "../../src/models/Entity"; interface FakeResponse extends MSSQL.IResult { recordsets: MSSQL.IRecordSet[]; @@ -26,8 +23,7 @@ class FakeRecordset extends Array implements MSSQL.IRecordSet { } } -// TODO: Remove -describe.skip("MssqlDriver", function() { +describe("MssqlDriver", function() { let driver: MssqlDriver; const sandbox = Sinon.sandbox.create(); @@ -52,14 +48,18 @@ describe.skip("MssqlDriver", function() { } }); const result = await driver.GetAllTables("schema", "db"); - const expectedResult = [] as EntityInfo[]; - const y = new EntityInfo(); - y.tsEntityName = "name"; - y.sqlEntityName = "name"; - y.Schema = "schema"; - y.Columns = [] as ColumnInfo[]; - y.Indexes = [] as IndexInfo[]; - y.Database = ""; + const expectedResult = [] as Entity[]; + const y: Entity = { + columns: [], + indices: [], + relationIds: [], + relations: [], + sqlName: "name", + tscName: "name", + schema: "schema", + database: "", + fileImports: [] + }; expectedResult.push(y); expect(result).to.be.deep.equal(expectedResult); }); @@ -83,36 +83,38 @@ describe.skip("MssqlDriver", function() { } }); - const entities = [] as EntityInfo[]; - const y = new EntityInfo(); - y.tsEntityName = "name"; - y.Columns = [] as ColumnInfo[]; - y.Indexes = [] as IndexInfo[]; - y.Database = ""; + const entities = [] as Entity[]; + const y: Entity = { + columns: [], + indices: [], + relationIds: [], + relations: [], + sqlName: "name", + tscName: "name", + schema: "schema", + database: "", + fileImports: [] + }; entities.push(y); - const expected: EntityInfo[] = JSON.parse(JSON.stringify(entities)); - expected[0].Columns.push({ + const expected: Entity[] = JSON.parse(JSON.stringify(entities)); + expected[0].columns.push({ options: { - default: `() => "'a'"`, nullable: true, - generated: true, - name: "name", - unique: false, - type: "int" + name: "name" }, - tsName: "name", - tsType: "number", - relations: [] as RelationInfo[] + type: "int", + generated: true, + default: `() => "'a'"`, + tscName: "name", + tscType: "number" }); - throw new Error(); - // TODO: Remove - // const result = await driver.GetCoulmnsFromEntity( - // entities, - // "schema", - // "db" - // ); - // expect(result).to.be.deep.equal(expected); + const result = await driver.GetCoulmnsFromEntity( + entities, + "schema", + "db" + ); + expect(result).to.be.deep.equal(expected); }); it("should find primary indexes"); it("should get indexes info"); diff --git a/test/integration/github-issues/58/entity/feedextrainfo.ts b/test/integration/github-issues/58/entity/Feedextrainfo.ts similarity index 70% rename from test/integration/github-issues/58/entity/feedextrainfo.ts rename to test/integration/github-issues/58/entity/Feedextrainfo.ts index 2f822dd..bdd1a4d 100644 --- a/test/integration/github-issues/58/entity/feedextrainfo.ts +++ b/test/integration/github-issues/58/entity/Feedextrainfo.ts @@ -10,14 +10,14 @@ import { JoinColumn, JoinTable } from "typeorm"; -import { users } from "./users"; -import { quests } from "./quests"; +import { Users } from "./Users"; +import { Quests } from "./Quests"; @Entity("feedextrainfo") @Index("feedExtraInfo_FeedOwnerId_idx", ["feedOwnerId"], { unique: true }) @Index("feedExtraInfo_ReaderId_idx", ["readerId"], { unique: true }) @Index("feedExtraInfo_QuestId_idx", ["questId"], { unique: true }) -export class feedextrainfo { +export class Feedextrainfo { @PrimaryColumn({ name: "FeedOwnerId" }) feedOwnerId: number; @@ -27,17 +27,17 @@ export class feedextrainfo { @PrimaryColumn({ name: "ReaderId" }) readerId: number; - @OneToOne(type => users, FeedOwnerId => FeedOwnerId.feedextrainfo) + @OneToOne(type => Users, FeedOwnerId => FeedOwnerId.feedextrainfo) @JoinColumn({ name: "FeedOwnerId" }) - feedOwner: users; + feedOwner: Users; - @OneToOne(type => quests, QuestId => QuestId.feedextrainfo) + @OneToOne(type => Quests, QuestId => QuestId.feedextrainfo) @JoinColumn({ name: "QuestId" }) - quest: quests; + quest: Quests; - @OneToOne(type => users, ReaderId => ReaderId.feedextrainfo2) + @OneToOne(type => Users, ReaderId => ReaderId.feedextrainfo2) @JoinColumn({ name: "ReaderId" }) - reader: users; + reader: Users; @Column("int", { name: "MostUpdatedFeedEntryIdUserRead" diff --git a/test/integration/github-issues/58/entity/quests.ts b/test/integration/github-issues/58/entity/Quests.ts similarity index 63% rename from test/integration/github-issues/58/entity/quests.ts rename to test/integration/github-issues/58/entity/Quests.ts index 681c603..a4b2362 100644 --- a/test/integration/github-issues/58/entity/quests.ts +++ b/test/integration/github-issues/58/entity/Quests.ts @@ -10,16 +10,16 @@ import { JoinColumn, JoinTable } from "typeorm"; -import { feedextrainfo } from "./feedextrainfo"; +import { Feedextrainfo } from "./Feedextrainfo"; @Entity("quests") -export class quests { +export class Quests { @Column("int", { primary: true, name: "QuestId" }) questId: number; - @OneToOne(type => feedextrainfo, feedextrainfo => feedextrainfo.quest) - feedextrainfo: feedextrainfo; + @OneToOne(type => Feedextrainfo, feedextrainfo => feedextrainfo.quest) + feedextrainfo: Feedextrainfo; } diff --git a/test/integration/github-issues/58/entity/users.ts b/test/integration/github-issues/58/entity/Users.ts similarity index 54% rename from test/integration/github-issues/58/entity/users.ts rename to test/integration/github-issues/58/entity/Users.ts index 6ae9e82..06d1560 100644 --- a/test/integration/github-issues/58/entity/users.ts +++ b/test/integration/github-issues/58/entity/Users.ts @@ -10,19 +10,19 @@ import { JoinColumn, JoinTable } from "typeorm"; -import { feedextrainfo } from "./feedextrainfo"; +import { Feedextrainfo } from "./Feedextrainfo"; @Entity("users") -export class users { +export class Users { @Column("int", { primary: true, name: "UserId" }) userId: number; - @OneToOne(type => feedextrainfo, feedextrainfo => feedextrainfo.feedOwner) - feedextrainfo: feedextrainfo; + @OneToOne(type => Feedextrainfo, feedextrainfo => feedextrainfo.feedOwner) + feedextrainfo: Feedextrainfo; - @OneToOne(type => feedextrainfo, feedextrainfo2 => feedextrainfo2.reader) - feedextrainfo2: feedextrainfo; + @OneToOne(type => Feedextrainfo, feedextrainfo2 => feedextrainfo2.reader) + feedextrainfo2: Feedextrainfo; } diff --git a/test/utils/GeneralTestUtils.ts b/test/utils/GeneralTestUtils.ts index 00b7e23..acccab7 100644 --- a/test/utils/GeneralTestUtils.ts +++ b/test/utils/GeneralTestUtils.ts @@ -15,8 +15,8 @@ export function getGenerationOptions(resultsPath: string): IGenerationOptions { return { resultsPath, noConfigs: false, - convertCaseEntity: "none", // TODO: Change to lib defaults - convertCaseFile: "none", + convertCaseEntity: "pascal", + convertCaseFile: "pascal", convertCaseProperty: "camel", propertyVisibility: "none", lazy: false,