refactorings

This commit is contained in:
Kononnable 2019-01-21 23:51:25 +01:00
parent c62010c079
commit c34f2912e0
6 changed files with 47 additions and 102 deletions

View File

@ -3,7 +3,6 @@ import {
WithPrecisionColumnType,
WithWidthColumnType
} from "typeorm/driver/types/ColumnTypes";
import { AbstractNamingStrategy } from "../AbstractNamingStrategy";
import { ColumnInfo } from "../models/ColumnInfo";
import { DatabaseModel } from "../models/DatabaseModel";
import { EntityInfo } from "../models/EntityInfo";

View File

@ -4,13 +4,11 @@ import fs = require('fs-extra');
import path = require('path')
import "reflect-metadata";
import { EntityFileToJson } from "../utils/EntityFileToJson";
const chai = require('chai');
const chaiSubset = require('chai-subset');
import chai = require('chai');
import chaiSubset = require('chai-subset');
import * as ts from "typescript";
import { Engine, IConnectionOptions, IGenerationOptions } from "../../src/Engine";
import { Engine } from "../../src/Engine";
import * as GTU from "../utils/GeneralTestUtils"
import { AbstractDriver } from "../../src/drivers/AbstractDriver";
import { Exception } from "handlebars";
chai.use(chaiSubset);
@ -35,7 +33,8 @@ describe("Column default values", async function () {
fs.removeSync(resultsPath)
const driver = Engine.createDriver(dbDriver);
const [connectionOptions, generationOptions] = await GTU.getDriverAndOptions(dbDriver, filesOrgPathJS, resultsPath);
const connectionOptions = await GTU.createModelsInDb(dbDriver, filesOrgPathJS);
const generationOptions = GTU.getGenerationOptions(resultsPath);
await Engine.createModelFromDatabase(driver,connectionOptions,generationOptions)
const filesGenPath = path.resolve(resultsPath, 'entities')

View File

@ -4,13 +4,11 @@ import fs = require('fs-extra');
import path = require('path')
import "reflect-metadata";
import { EntityFileToJson } from "../utils/EntityFileToJson";
const chai = require('chai');
const chaiSubset = require('chai-subset');
import chai = require('chai');
import chaiSubset = require('chai-subset');
import * as ts from "typescript";
import { Engine, IConnectionOptions, IGenerationOptions } from "../../src/Engine";
import { Engine } from "../../src/Engine";
import * as GTU from "../utils/GeneralTestUtils"
import { AbstractDriver } from "../../src/drivers/AbstractDriver";
import { Exception } from "handlebars";
chai.use(chaiSubset);
@ -35,7 +33,8 @@ describe("Platform specyfic types", async function () {
fs.removeSync(resultsPath)
const driver = Engine.createDriver(dbDriver);
const [connectionOptions, generationOptions] = await GTU.getDriverAndOptions(dbDriver, filesOrgPathJS, resultsPath);
const connectionOptions = await GTU.createModelsInDb(dbDriver, filesOrgPathJS);
const generationOptions = GTU.getGenerationOptions(resultsPath);
await Engine.createModelFromDatabase(driver,connectionOptions,generationOptions)
const filesGenPath = path.resolve(resultsPath, 'entities')

View File

@ -3,15 +3,12 @@ import { expect } from "chai";
import fs = require('fs-extra');
import path = require('path')
import "reflect-metadata";
import * as Sinon from 'sinon'
import { Connection, ConnectionOptions, createConnection } from "typeorm";
import { Engine, IConnectionOptions, IGenerationOptions } from "../../src/Engine";
import { Engine } from "../../src/Engine";
import { EntityFileToJson } from "../utils/EntityFileToJson";
const chai = require('chai');
const chaiSubset = require('chai-subset');
import chai = require('chai');
import chaiSubset = require('chai-subset');
import * as ts from "typescript";
import * as GTU from "../utils/GeneralTestUtils"
import { AbstractDriver } from "../../src/drivers/AbstractDriver";
chai.use(chaiSubset);
@ -49,7 +46,8 @@ describe("GitHub issues", async function () {
fs.removeSync(resultsPath)
const driver = Engine.createDriver(dbDriver);
const [connectionOptions, generationOptions] = await GTU.getDriverAndOptions(dbDriver, filesOrgPathJS, resultsPath);
const connectionOptions = await GTU.createModelsInDb(dbDriver, filesOrgPathJS);
const generationOptions = GTU.getGenerationOptions(resultsPath);
switch (folder) {
case '65':

View File

@ -3,13 +3,12 @@ import { expect } from "chai";
import fs = require('fs-extra');
import path = require('path')
import "reflect-metadata";
import { Engine, IConnectionOptions, IGenerationOptions } from "../../src/Engine";
import { Engine } from "../../src/Engine";
import { EntityFileToJson } from "../utils/EntityFileToJson";
const chai = require('chai');
const chaiSubset = require('chai-subset');
import chai = require('chai');
import chaiSubset = require('chai-subset');
import * as ts from "typescript";
import * as GTU from "../utils/GeneralTestUtils"
import { AbstractDriver } from "../../src/drivers/AbstractDriver";
chai.use(chaiSubset);
@ -17,7 +16,6 @@ describe("TypeOrm examples", async function () {
this.timeout(30000)
this.slow(5000)// compiling created models takes time
const dbDrivers: string[] = GTU.getEnabledDbDrivers();
const examplesPathJS = path.resolve(process.cwd(), 'dist/test/integration/examples')
@ -34,7 +32,8 @@ describe("TypeOrm examples", async function () {
fs.removeSync(resultsPath)
const driver=Engine.createDriver(dbDriver);
const [connectionOptions, generationOptions] = await GTU.getDriverAndOptions(dbDriver, filesOrgPathJS, resultsPath);
const connectionOptions = await GTU.createModelsInDb(dbDriver, filesOrgPathJS);
const generationOptions = GTU.getGenerationOptions(resultsPath);
if (folder == 'sample18-lazy-relations') {
generationOptions.lazy = true;

View File

@ -2,7 +2,6 @@ import path = require('path')
import { ConnectionOptions, createConnection } from "typeorm";
import * as ts from "typescript";
import * as yn from "yn"
import { AbstractNamingStrategy } from "../../src/AbstractNamingStrategy";
import { AbstractDriver } from "../../src/drivers/AbstractDriver";
import { MariaDbDriver } from "../../src/drivers/MariaDbDriver";
import { MssqlDriver } from "../../src/drivers/MssqlDriver";
@ -10,22 +9,22 @@ import { MysqlDriver } from "../../src/drivers/MysqlDriver";
import { OracleDriver } from "../../src/drivers/OracleDriver";
import { PostgresDriver } from "../../src/drivers/PostgresDriver";
import { SqliteDriver } from "../../src/drivers/SqliteDriver";
import { Engine, IConnectionOptions, IGenerationOptions } from "../../src/Engine";
import { IConnectionOptions, IGenerationOptions } from "../../src/Engine";
import { NamingStrategy } from "../../src/NamingStrategy";
export function getGenerationOptions():IGenerationOptions{
export function getGenerationOptions(resultsPath: string): IGenerationOptions {
return {
resultsPath: "",
noConfigs: false,
convertCaseEntity: 'none',
convertCaseFile: 'none',
convertCaseProperty: 'none',
propertyVisibility: 'none',
lazy: false,
constructor: false,
namingStrategy: new NamingStrategy(),
relationIds: false,
activeRecord: false
resultsPath: resultsPath,
noConfigs: false,
convertCaseEntity: 'none',
convertCaseFile: 'none',
convertCaseProperty: 'none',
propertyVisibility: 'none',
lazy: false,
constructor: false,
namingStrategy: new NamingStrategy(),
relationIds: false,
activeRecord: false
}
}
@ -61,20 +60,11 @@ export async function createMSSQLModels(filesOrgPath: string): Promise<IConnecti
}
await conn.synchronize();
if (conn.isConnected) {
await conn.close()
}
conn = await createConnection(connOpt)
queryRunner = conn.createQueryRunner()
for (const sch of schemas.split(',')) {
await queryRunner.createSchema(sch, true);
}
await conn.synchronize();
if (conn.isConnected) {
await conn.close()
}
const connectionOptions:IConnectionOptions = {
const connectionOptions: IConnectionOptions = {
host: String(process.env.MSSQL_Host),
port: Number(process.env.MSSQL_Port),
databaseName: String(process.env.MSSQL_Database),
@ -85,7 +75,6 @@ export async function createMSSQLModels(filesOrgPath: string): Promise<IConnecti
ssl: yn(process.env.MSSQL_SSL),
}
return connectionOptions;
}
@ -124,18 +113,7 @@ export async function createPostgresModels(filesOrgPath: string): Promise<IConne
await conn.close()
}
conn = await createConnection(connOpt)
queryRunner = conn.createQueryRunner()
for (const sch of schemas.split(',')) {
await queryRunner.createSchema(sch, true);
}
await conn.synchronize();
if (conn.isConnected) {
await conn.close()
}
const connectionOptions:IConnectionOptions={
const connectionOptions: IConnectionOptions = {
host: String(process.env.POSTGRES_Host),
port: Number(process.env.POSTGRES_Port),
databaseName: String(process.env.POSTGRES_Database),
@ -144,7 +122,6 @@ export async function createPostgresModels(filesOrgPath: string): Promise<IConne
databaseType: 'postgres',
schemaName: 'public,sch1,sch2',
ssl: yn(process.env.POSTGRES_SSL),
}
return connectionOptions;
@ -170,21 +147,13 @@ export async function createSQLiteModels(filesOrgPath: string): Promise<IConnect
}
let conn = await createConnection(connOpt)
let queryRunner = conn.createQueryRunner()
await conn.synchronize();
if (conn.isConnected) {
await conn.close()
}
conn = await createConnection(connOpt)
queryRunner = conn.createQueryRunner()
await conn.synchronize();
if (conn.isConnected) {
await conn.close()
}
const connectionOptions:IConnectionOptions={
const connectionOptions: IConnectionOptions = {
host: '',
port: 0,
databaseName: String(process.env.SQLITE_Database),
@ -193,7 +162,6 @@ export async function createSQLiteModels(filesOrgPath: string): Promise<IConnect
databaseType: 'sqlite',
schemaName: '',
ssl: false,
}
return connectionOptions;
@ -227,8 +195,7 @@ export async function createMysqlModels(filesOrgPath: string): Promise<IConnecti
await conn.close()
}
const connectionOptions:IConnectionOptions={
const connectionOptions: IConnectionOptions = {
host: String(process.env.MYSQL_Host),
port: Number(process.env.MYSQL_Port),
databaseName: String(process.env.MYSQL_Database),
@ -237,7 +204,6 @@ export async function createMysqlModels(filesOrgPath: string): Promise<IConnecti
databaseType: 'mysql',
schemaName: 'ignored',
ssl: yn(process.env.MYSQL_SSL),
}
return connectionOptions;
@ -270,8 +236,7 @@ export async function createMariaDBModels(filesOrgPath: string): Promise<IConnec
await conn.close()
}
const connectionOptions:IConnectionOptions={
const connectionOptions: IConnectionOptions = {
host: String(process.env.MARIADB_Host),
port: Number(process.env.MARIADB_Port),
databaseName: String(process.env.MARIADB_Database),
@ -280,7 +245,6 @@ export async function createMariaDBModels(filesOrgPath: string): Promise<IConnec
databaseType: 'mariadb',
schemaName: 'ignored',
ssl: yn(process.env.MARIADB_SSL),
}
return connectionOptions;
@ -314,7 +278,7 @@ export async function createOracleDBModels(filesOrgPath: string): Promise<IConne
await conn.close()
}
const connectionOptions:IConnectionOptions = {
const connectionOptions: IConnectionOptions = {
host: String(process.env.ORACLE_Host),
port: Number(process.env.ORACLE_Port),
databaseName: String(process.env.ORACLE_Database),
@ -323,7 +287,6 @@ export async function createOracleDBModels(filesOrgPath: string): Promise<IConne
databaseType: 'oracle',
schemaName: String(process.env.ORACLE_Username),
ssl: yn(process.env.ORACLE_SSL),
}
return connectionOptions;
@ -370,34 +333,22 @@ export function getEnabledDbDrivers() {
return dbDrivers;
}
export async function getDriverAndOptions(dbDriver: string, filesOrgPathJS: string, resultsPath: string): Promise<[IConnectionOptions,IGenerationOptions]> {
let connectionOptions: IConnectionOptions;
let generationOptions = getGenerationOptions();
switch (dbDriver) {
export function createModelsInDb(dbDriver: string, filesOrgPathJS: string): Promise<IConnectionOptions> {
switch (dbDriver) {
case 'sqlite':
connectionOptions = await createSQLiteModels(filesOrgPathJS);
break;
return createSQLiteModels(filesOrgPathJS);
case 'postgres':
connectionOptions = await createPostgresModels(filesOrgPathJS);
break;
return createPostgresModels(filesOrgPathJS);
case 'mysql':
connectionOptions = await createMysqlModels(filesOrgPathJS);
break;
return createMysqlModels(filesOrgPathJS);
case 'mariadb':
connectionOptions = await createMariaDBModels(filesOrgPathJS);
break;
return createMariaDBModels(filesOrgPathJS);
case 'mssql':
connectionOptions = await createMSSQLModels(filesOrgPathJS);
break;
return createMSSQLModels(filesOrgPathJS);
case 'oracle':
connectionOptions = await createOracleDBModels(filesOrgPathJS);
break;
return createOracleDBModels(filesOrgPathJS);
default:
console.log(`Unknown engine type`);
throw new Error("Unknown engine type");
}
generationOptions.resultsPath = resultsPath;
return [connectionOptions, generationOptions];
}