public GeneratedSolution BuildSolution([FromBody] KickstartSolutionRequest generationModel) { generationModel.GenerateGrpcUnitTestProject = true; var channel = new Channel("localhost:50083", ChannelCredentials.Insecure); var client = new KickstartServiceApiClient(channel); var response = client.KickstartSolution(generationModel); return(new GeneratedSolution { Succeeded = response.Succeeded, ErrorMessage = response.ErrorMessage, ZipAsBase64 = response.GeneratedFilesBase64 }); }
public override async Task <KickstartSolutionResponse> KickstartSolution(KickstartSolutionRequest request, ServerCallContext context) { var workDir = GetTemporaryDirectory(); var model = new KickstartWizardModel { ProjectDirectory = workDir, MetadataSource = MetadataSource.Grpc, ConvertToSnakeCase = request.ConvertToSnakeCase, CreateDataLayerProject = request.GenerateDataLayerProject, CreateDatabaseProject = request.GenerateDatabaseProject, CreateGrpcServiceProject = request.GenerateGrpcServiceProject, CreateGrpcUnitTestProject = request.GenerateGrpcUnitTestProject, CreateGrpcClientProject = request.GenerateGrpcClientProject, CreateWebAppProject = request.GenerateWebAppProject, CreateDockerComposeProject = request.GenerateDockerComposeProject, CompanyName = request.CompanyName, SolutionName = request.SolutionName, ProjectName = request.ProjectName, DatabaseType = (Utility.DataStoreTypes)request.DatabaseType, ProtoFileText = request.ProtoFileText, GenerateStoredProcAsEmbeddedQuery = true }; try { var result = await _executor.ExecuteAsync(new BuildSolutionQuery { KickstartModel = model }).ConfigureAwait(false); } catch (Exception ex) { var response = new KickstartSolutionResponse { Succeeded = false, ErrorMessage = ex.Message }; return(response); } var tempZip = Path.GetTempFileName(); File.Delete(tempZip); System.IO.Compression.ZipFile.CreateFromDirectory(workDir, tempZip); using (MemoryStream memoryStream = new MemoryStream()) { using (FileStream file = new FileStream(tempZip, FileMode.Open, FileAccess.Read)) file.CopyTo(memoryStream); File.Delete(tempZip); ClearFolder(workDir); Directory.Delete(workDir); var response = new KickstartSolutionResponse { Succeeded = true, GeneratedFilesBase64 = Convert.ToBase64String(memoryStream.ToArray()) }; return(response); } }