diff --git a/.gitignore b/.gitignore index 7b09b1c..0295445 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ ormconfig.json .vscode typings/ **/*.js -**/*.js.map \ No newline at end of file +**/*.js.map +results/*.* \ No newline at end of file diff --git a/README.md b/README.md index 5a3aca2..723b5d8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # typeorm-model-generator Generates models for TypeORM from existing databases. + +*Work in progress* \ No newline at end of file diff --git a/src/Engine.ts b/src/Engine.ts index ab4edda..1df25ea 100644 --- a/src/Engine.ts +++ b/src/Engine.ts @@ -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 { diff --git a/src/entity.mst b/src/entity.mst new file mode 100644 index 0000000..8783991 --- /dev/null +++ b/src/entity.mst @@ -0,0 +1,11 @@ +import {Entity, PrimaryColumn, Column, OneToMany, ManyToOne, JoinTable} from "typeorm"; + +@Entity() +export class {{EntityName}} { + + {{#Columns}} + + @Column() + {{name}}:{{data_type}}; + {{/Columns}} +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 44d49a0..de500ee 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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.`) }) diff --git a/tsconfig.json b/tsconfig.json index 45b66b9..204461f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,5 +12,7 @@ "stripInternal": true, "strictNullChecks": true, "moduleResolution": "node" - } + }, "include": [ + "src" + ] } \ No newline at end of file