@amberjs/cli
Version:
Amber.js command line interface
66 lines (53 loc) • 1.67 kB
JavaScript
const inflection = require('inflection');
const fs = require('fs');
const Sequelize = require('sequelize');
const createDomain = require('./templates/createDomain');
const { firstToUpper } = require('../../../utils');
/**
* scaffold domains from all existing orm models
*
* @return {promise}
*/
const scaffoldDomains = () => {
const config = require(`${process.cwd()}/config/index.js`);
const sequelize = new Sequelize(config.db);
return new Promise((resolve) => {
const files = [];
fs.readdirSync(`${process.env.PWD}/src/infra/database/models`)
.filter(
(file) => file.indexOf('.') !== 0
&& file !== 'index.js'
&& file.slice(-3) === '.js',
)
.forEach((file) => {
const model = sequelize.import(
`${process.env.PWD}/src/infra/database/models/${file}`,
);
const domain = createDomain(model);
const destination = `${process.env.PWD}/src/domain`;
const fileName = `${inflection.singularize(
firstToUpper(file.split('.')[0]),
)}.js`;
// if (!fs.existsSync(path)) {
// fs.mkdirSync(path);
// fs.chmodSync(path, '0775');
// }
// fs.writeFileSync(`${path}/${fileName}`, domain);
// console.log(`Domain ${fileName} created!`);
files.push({
fileName,
destination,
content: domain,
});
});
resolve(files);
});
};
/**
* scaffolds a domain based on a given model
*
* @param {string} modelName name of the model to scaffold the domain from
*/
// const scaffoldDomain = (modelName) => {
// };
module.exports = scaffoldDomains;