@notadd/cli
Version:
notadd core none dependence
107 lines (105 loc) • 4.05 kB
JavaScript
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;
;