UNPKG

egg-xc-base

Version:

a base framework with egg.js

159 lines (152 loc) 5.77 kB
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()