UNPKG

@veecode-platform/safira-cli

Version:

Generate a microservice project from your spec.

44 lines (43 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SpringControllerCreator = void 0; const generate_file_1 = require("../../generate-file"); const file_system_utils_1 = require("../../../../utils/file-system-utils"); const safira_settings_1 = require("../../../../safira-project/safira-settings"); const string_utils_1 = require("../../../../utils/string-utils"); const api_implementation_1 = require("../../../java/api-implementation"); const interface_1 = require("../../../../engine/java/interface"); const javax_validation_1 = require("../javax-validation"); class SpringControllerCreator extends generate_file_1.GenerateFileTemplate { create(projectPath) { const controllerTemplates = file_system_utils_1.FileSystemUtils.buildPath(generate_file_1.GenerateFileTemplate.templatesFolder, "java", "spring", "controller"); const controllerMustache = file_system_utils_1.FileSystemUtils.buildPath(controllerTemplates, "controller.java.mustache"); const apiPackage = safira_settings_1.SafiraSettings.instance(file_system_utils_1.FileSystemUtils.buildPath(projectPath, ".safira")).loadSettingsFile().project.java.package; const packageAsPath = string_utils_1.StringUtils.replaceAll(apiPackage, ".", file_system_utils_1.FileSystemUtils.getFileSeparator()); const apisFolder = file_system_utils_1.FileSystemUtils.buildPath(projectPath, "src", "main", "java", packageAsPath, "api"); const controllerFolder = file_system_utils_1.FileSystemUtils.buildPath(projectPath, "src", "main", "java", packageAsPath, "controller"); file_system_utils_1.FileSystemUtils.createFolder(controllerFolder); const regex = /@(\w+)/g; for (const file of file_system_utils_1.FileSystemUtils.readDir(apisFolder) .filter(file => file.endsWith("Api.java"))) { const interfaceName = file.replace(".java", ""); const className = file.replace("Api.java", ""); const apiPath = file_system_utils_1.FileSystemUtils.buildPath(apisFolder, file); const interfaceContent = file_system_utils_1.FileSystemUtils.loadFile(apiPath); const interfaceObject = new interface_1.JavaInterfaceObject(interfaceContent); const methods = interfaceObject.methods.map(met => met.replace(api_implementation_1.SpringMethodExtract.instance.getRemoveAnnotationsTemplate(), "")); const importParams = ["org.springframework.web.bind.annotation.RestController", `${apiPackage}.api.${interfaceName}`]; const params = { package: `${apiPackage}.controller`, className: className, interface: interfaceName, methods: methods, imports: [...importParams, ...interfaceObject.imports.filter(dep => !dep.includes("*")), ...javax_validation_1.JavaValidationImports.instance.findImports(methods)], }; const controllerFile = file_system_utils_1.FileSystemUtils.buildPath(controllerFolder, `${className}Controller.java`); if (!file_system_utils_1.FileSystemUtils.exists(controllerFile)) super.writeFile(controllerFile, controllerMustache, params); } } } exports.SpringControllerCreator = SpringControllerCreator;