UNPKG

@notadd/cli

Version:

notadd core none dependence

107 lines (105 loc) 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateBasicService = void 0; const tslib_1 = require("tslib"); const path_1 = require("path"); const fs_extra_1 = require("fs-extra"); const lodash_1 = require("lodash"); const util_1 = require("./util"); const core_1 = require("@notadd/core"); let CreateBasicService = class CreateBasicService { constructor(util) { this.util = util; } createBasic(entities) { const dirName = entities[0].dirName; // 获取不同层的package.json const { basicDir, entitiesPakcageJson } = this.util.getPackageJsons(entities); fs_extra_1.ensureDirSync(basicDir); //创建basic文件 entities.forEach((it) => { const thisFileUrl = path_1.join(basicDir, it.fileName.replace('.entity.ts', '.basic.ts')); // 如果在basic层已经存在就return if (fs_extra_1.pathExistsSync(thisFileUrl)) { console.log(`basic层${it.fileName.replace('.entity.ts', '.basic.ts')}已存在,所以未生成`); return; } const basicContent = this._createBasicContent(it, entitiesPakcageJson); fs_extra_1.writeFileSync(thisFileUrl, basicContent); }); // 导入文件 导入文件名 导出文件 const imports = this.util.importExportFileAndImportNames(entities, 'basic'); // 创建.module.ts const moduleContent = this._createModuleContent(entities, imports, entitiesPakcageJson); const basicModuleName = `${dirName}.module.ts`; const basicModuleUrl = path_1.join(basicDir, basicModuleName); if (fs_extra_1.pathExistsSync(basicModuleUrl)) { console.log(`basic层已存在${basicModuleName}文件,所以未生成`); } else { fs_extra_1.writeFileSync(basicModuleUrl, moduleContent); } //创建此模块的index.ts 和修改模块的导出 this.util.createIndexTs(dirName, basicDir, imports.exportFile); } /** * 创建.module.ts 文件内容 */ _createModuleContent(entities, imports, entitiesPakcageJson) { const dirName = entities[0].dirName; return ` import { Module } from '@notadd/core'; import { ${lodash_1.upperFirst(dirName)}EntitiesModule } from '${entitiesPakcageJson.name}';${imports.importFile} @Module({ imports: [ ${lodash_1.upperFirst(dirName)}EntitiesModule, ], providers: [ ${imports.importNames} ] }) export class ${lodash_1.upperFirst(dirName)}BasicModule {} `; } /** * 创建.basic.ts文件内容 */ _createBasicContent(it, entitiesPakcageJson) { const basicName = it.entityName.replace(/Entity$/, 'Basic'); const usedEntity = lodash_1.lowerFirst(it.entityName.replace(/Entity$/, '')); return ` import { Injectable, Inject } from '@notadd/core'; import { Repository } from '@notadd/typeorm'; import { Limit } from '@notadd/graphql'; import { ${it.entityName} } from '${entitiesPakcageJson.name}'; @Injectable() export class ${basicName} { constructor( @Inject(${it.entityName}) public ${usedEntity}: Repository<${it.entityName}> ) {} /** * 查询列表 */ async find${it.entityName.replace(/Entity$/, '')}List( where?: any, limit?: Limit, order?: any ): Promise<[${it.entityName}[], number]> { const page = limit && limit.page ? limit.page : 1; const psize = limit && limit.psize ? limit.psize : 20; let it = this.${usedEntity} .createQueryBuilder('entity') return it .orderBy(order) .skip((page - 1) * psize) .take(psize) .getManyAndCount(); } }`; } }; CreateBasicService = tslib_1.__decorate([ core_1.Injectable(), tslib_1.__metadata("design:paramtypes", [util_1.UtilService]) ], CreateBasicService); exports.CreateBasicService = CreateBasicService;