base model generation

This commit is contained in:
Kononnable 2017-04-03 00:28:38 +02:00
parent 38b254548e
commit 15c8c56f24
6 changed files with 40 additions and 3 deletions

3
.gitignore vendored
View File

@ -4,4 +4,5 @@ ormconfig.json
.vscode
typings/
**/*.js
**/*.js.map
**/*.js.map
results/*.*

View File

@ -1,2 +1,4 @@
# typeorm-model-generator
Generates models for TypeORM from existing databases.
*Work in progress*

View File

@ -1,5 +1,8 @@
import { MssqlDriver } from './drivers/MssqlDriver'
import { AbstractDriver } from "./drivers/AbstractDriver";
import * as Mustache from 'mustache'
import fs = require('fs');
import path = require('path')
/**
* Engine
*/
@ -21,7 +24,23 @@ export class Engine {
}
private createModelFromMetadata(databaseModel: DatabaseModel) {
let templatePath = path.resolve(__dirname,'entity.mst')
let template = fs.readFileSync(templatePath,'UTF-8');
let resultPath = path.resolve(__dirname,'../results')
fs.writeFileSync(path.resolve(resultPath,'tsconfig.json'),`{"compilerOptions": {
"lib": ["es5", "es6"],
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true
}}`,{encoding:'UTF-8',flag:'w'});
databaseModel.entities.forEach(element => {
let resultFilePath = path.resolve(resultPath,element.EntityName+'.ts');
let rendered = Mustache.render(template, element);
fs.writeFileSync(resultFilePath,rendered,{encoding:'UTF-8',flag:'w'})
});
}
}
export interface EngineOptions {

11
src/entity.mst Normal file
View File

@ -0,0 +1,11 @@
import {Entity, PrimaryColumn, Column, OneToMany, ManyToOne, JoinTable} from "typeorm";
@Entity()
export class {{EntityName}} {
{{#Columns}}
@Column()
{{name}}:{{data_type}};
{{/Columns}}
}

View File

@ -65,6 +65,8 @@ let engine = new Engine(
password: argv.x
});
console.log(`[${new Date().toLocaleTimeString()}] Starting creation of model classes.`);
engine.createModelFromDatabase().then( ()=>{
// process.abort();
console.info(`[${new Date().toLocaleTimeString()}] Typeorm model classes created.`)
})

View File

@ -12,5 +12,7 @@
"stripInternal": true,
"strictNullChecks": true,
"moduleResolution": "node"
}
}, "include": [
"src"
]
}