egg-xc-base
Version:
a base framework with egg.js
159 lines (152 loc) • 5.77 kB
JavaScript
const fs = require('fs')
const path = require('path')
const moment = require('moment')
let _module = null
let _module_name = null
let _table = null
let _db = null
let args = process.argv
let tempInit = require('./.temp_init.json')
let time = null
function initBase() {
fs.mkdirSync(path.join(__dirname,`../api/${_module}`));
fs.mkdirSync( path.join(__dirname,`../api/${_module}/.init`));
fs.mkdirSync( path.join(__dirname,`../api/${_module}/controller`));
fs.mkdirSync( path.join(__dirname,`../api/${_module}/service`));
let router = `
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller,config } = app;
};`
router =
`'use strict';
/**
* @apiDefine Error0
* @apiSuccess {string} Error0.code=0 错误码
* @apiSuccess {string} Error0.message=Success 错误信息!
*/
/**
* @apiDefine Error1
* @apiError {string} Error1.code
* 10000:鉴权相关。
* 20000:数据库相关。
* 30000:服务端逻辑。
* 10001:jwt 验证错误。
* 10002:oauth 验证错误。
* 10003:参数验证错误。
* 20001:redis Error错误码。
* @apiError {string} Error1.message=xxx 错误信息!
* @apiError {object} Error1.info=xxx 错误内容!
*/
${router}`;
fs.writeFileSync(path.join(__dirname, `../api/${_module}/router.js`),
router
)
console.log(`创建module文件夹--> `+path.resolve( path.join(__dirname,`../api/${_module}`)))
console.log(`创建.init文件夹 --> `+path.resolve( path.join(__dirname,`../api/${_module}/.init`)))
console.log(`创建controller文件夹--> `+path.resolve(path.join(__dirname,`../api/${_module}/controller`)))
console.log(`创建Service文件夹--> `+path.resolve(path.join(__dirname,`../api/${_module}/service`) ))
console.log(`创建router文件 --> `+path.resolve( path.join(__dirname,`../api/${_module}/router.js`)))
}
async function doThat() {
if( args.length < 3 ){
throw new Error(
`
指令: yarn api-init
Error 缺少传入参数:
1.模块
2.模块名称
3.[表名称]可选
4.[数据库]可选 默认db1
指令构成: yarn api-init 模块 模块名称 [表名称] [数据库]
eg: yarn api-init room 房间 jg_room db1
`)
}else if( args.length < 4){
throw new Error(`
指令: yarn api-init ${args[2]}
Error 缺少传入参数:
1.模块名称
2.[表名称]可选
3.[[数据库]可选 默认db1
指令构成: yarn api-init 模块 模块名称 [表名称] [数据库]
eg: yarn api-init room 房间 jg_room db1
`)
}else{
time = new moment( Date.now()).format('YYYY-MM-DD HH:mm:ss.SSS')
console.log(`
指令: yarn api-init ${args[2]} ${args[3]} ${args.length>4?args[4]:''} ${args.length>5?args[5]:''}
`)
_module = args[2]
_module_name = args[3]
console.log(`传入模块--> ${_module}`)
console.log(`传入模块名称--> ${_module_name}`)
if(args.length>4){
_table = args[4]
console.log(`传入数据库表--> ${_table}`)
}
if(args.length>5){
_db = args[5]
console.log(`传入数据库--> ${_db}`)
}
if(fs.existsSync(`../api/${_module}`)){
throw new Error("Error-->该模块已存在!")
}
initBase()
tempInit.ctxs[_module] = {
group : _module,
}
tempInit.ctxs[_module].name = null
tempInit.ctxs[_module].db = null
tempInit.ctxs[_module].table = null
tempInit.ctxs[_module].api_num = 0
tempInit.ctxs[_module].apis = []
if(_table){
//初始化controller service router
const apiInitDb = require('./.apiInitDb')
let info = await apiInitDb.doIt({
_module,
_table,
_db,
})
tempInit.ctxs[_module].name = info.name
tempInit.ctxs[_module].api_num = info.api_num
tempInit.ctxs[_module].db = info.db
tempInit.ctxs[_module].table = info.table
tempInit.ctxs[_module].apis = info.apis
tempInit.api_num += info.api_num
}else{
//初始化controller service router
const apiInitNormal = require('./.apiInitNormal')
let info = await apiInitNormal.doIt({
_module,
})
tempInit.ctxs[_module].api_num = info.api_num
tempInit.ctxs[_module].apis = info.apis
tempInit.api_num += info.api_num
}
tempInit.module = _module
tempInit.module_name = _module_name
tempInit.ver = 1
tempInit.create_time = time
tempInit.update_time = time
fs.writeFileSync( path.join(__dirname,`../api/${_module}/.init/.init.json`),
JSON.stringify(tempInit,0,3)
)
console.log(`创建.init.json文件 --> `+path.resolve(path.join(__dirname, `../api/${_module}/.init/.init.json`)))
}
}
async function doIt() {
console.log(`------------------------------------------- apiInit start --------------------------------------------`)
try {
await doThat()
console.log(`apiInit result --> ${_module?'模块:'+_module+' ':''}成功 *^v^* `)
}catch (err){
console.error(err.stack)
console.log(err.message)
console.log(`apiInit result --> ${_module?'模块:'+_module+' ':''}失败 -o(╥﹏╥)o -`)
}
console.log(`------------------------------------------- apiInit End ----------------------------------------------`)
}
doIt()