jmms
Version:
Jmms cli tools, Jmms is a java meta-micro-service framework
66 lines (57 loc) • 2.04 kB
JavaScript
const _ = require('lodash');
const log = require('../log');
const fs = require('fs');
const utils = require('../utils');
const dbms = require('./dbms');
const valid = require('../valid');
var BaseGenerator = require('../base');
module.exports = class extends BaseGenerator {
constructor(args, opts) {
super(args, opts, utils.resolveMeta(module.parent));
}
_selectDatabase(done) {
return this.prompt([
{
type: 'list',
name: 'type',
message: 'Please select the database type!',
choices: ['mysql'],
default: 'mysql',
validate: valid.required
}
]).then((answers) => {
this.type = answers.type;
this.db = dbms[this.type];
if(!this.db) {
log.error("Unsupported db type '" + this.type + "'");
process.exit(1);
}
done.call(this);
});
}
_selectDatabaseAndConfigure(done) {
return this._selectDatabase(() => {
this.prompt(this.db.prompt).then((ans) => {
const conf = {type:this.type};
utils.copyProperties(ans, conf);
done.call(this, conf);
});
});
}
_generateEntitiesWithOptions(entities, opts) {
if(!fs.existsSync(this.app.entitiesDir)) {
fs.mkdirSync(this.app.entitiesDir);
}
for(var i=0; i<entities.length; i++){
const entity = entities[i];
const filename = entity.name + ".json";
const filepath = this.app.entityPath(filename);
if(fs.existsSync(filepath)) {
log.info(`File ${filename} exists, skip generating entity '${entity.name}`);
}else {
log.info(`Generate entity '${entity.name}' at '${filename}'`);
fs.writeFileSync(filepath, JSON.stringify(entity, null, 4));
}
}
}
};