UNPKG

gen-jhipster

Version:

Spring Boot + Angular/React/Vue in one handy generator

88 lines (87 loc) 3.58 kB
/** * Copyright 2013-2024 the original author or authors from the JHipster project. * * This file is part of the JHipster project, see https://www.jhipster.tech/ * for more information. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import _ from 'lodash'; import { asWritingEntitiesTask } from '../base-application/support/task-type-inference.js'; import { SERVER_MAIN_PROTO_DIR, SERVER_MAIN_SRC_DIR } from '../generator-constants.js'; import { moveToJavaPackageSrcDir, moveToSrcMainProtoDir } from '../java/support/index.js'; const defaultEntities = ['User', 'Authority']; const protoFiles = [ { condition: ctx => ctx.entityClass !== 'User', path: `${SERVER_MAIN_PROTO_DIR}`, renameTo: moveToSrcMainProtoDir, templates: ['entity/_entityUnderscoredName_.proto'], }, { condition: ctx => ctx.entityClass === 'User', path: `${SERVER_MAIN_PROTO_DIR}`, renameTo: moveToSrcMainProtoDir, templates: ['entity/user_.proto'], }, ]; const javaFiles = [ { condition: ctx => ctx.entityClass === 'Authority', path: `${SERVER_MAIN_SRC_DIR}_package_`, renameTo: moveToJavaPackageSrcDir, templates: ['web/grpc/service/AuthorityGrpcService_.java', 'web/grpc/mapper/AuthorityProtoMapper_.java'], }, { condition: ctx => ctx.entityClass === 'User', path: `${SERVER_MAIN_SRC_DIR}_package_`, renameTo: moveToJavaPackageSrcDir, templates: ['web/grpc/service/UserGrpcService_.java', 'web/grpc/mapper/UserProtoMapper_.java'], }, { condition: ctx => !defaultEntities.includes(ctx.entityClass), path: `${SERVER_MAIN_SRC_DIR}_package_`, renameTo: moveToJavaPackageSrcDir, templates: ['web/grpc/service/_entityClass_GrpcService.java', 'web/grpc/mapper/_entityClass_ProtoMapper.java'], }, ]; export const grpcFiles = { protoFiles, javaFiles, }; export function cleanupEntitiesTask() { } export default asWritingEntitiesTask(async function writeEntitiesTasks({ application, entities }) { if (application.enableGrpc) { for (const entity of entities.filter(entity => !entity.skipServer)) { const instanceType = entity.dto === 'mapstruct' ? `${entity.entityClass}DTO` : entity.entityClass; const instanceName = entity.dto === 'mapstruct' ? `${entity.entityInstance}DTO` : entity.entityInstance; const entityUnderscoredName = _.snakeCase(entity.entityClass).toLowerCase(); let idProtoWrappedType; let idProtoType; idProtoType = 'string'; idProtoWrappedType = 'StringValue'; const newApplication = { ...application, instanceType, instanceName, entityUnderscoredName, idProtoType, idProtoWrappedType, }; await this.writeFiles({ sections: grpcFiles, context: { ...newApplication, ...entity }, }); } } });