/* * private KProtoFile FindKProtoFile(KGrpcProject grpcKProject, CMethod method) * { * KProtoFile kProtoFile = null; * * foreach (var mPf in grpcKProject.ProtoFile) * { * foreach (var mRpc in mPf.Rpc) * if (mRpc.RpcName.ToLower() == method.MethodName.ToLower()) * { * kProtoFile = mPf; * break; * } * if (kProtoFile != null) * break; * } * * if (kProtoFile == null) * { * kProtoFile = grpcKProject.ProtoFile.FirstOrDefault(); * if (kProtoFile == null) * { * kProtoFile = new KProtoFile {ProtoFileName = grpcKProject.ProjectName}; * grpcKProject.ProtoFile.Add(kProtoFile); * } * } * if (kProtoFile.GeneratedProtoFile == null) * { * var protoNamespace = kProtoFile.CSharpNamespace; // * if (string.IsNullOrEmpty(protoNamespace)) * protoNamespace = * $@"{grpcKProject.CompanyName}.{grpcKProject.ProjectName}{grpcKProject.NamespaceSuffix}.{ * grpcKProject.ProjectSuffix * }.Proto.Types"; * kProtoFile.GeneratedProtoFile = BuildProtoFile(grpcKProject, kProtoFile, protoNamespace); * } * * * return kProtoFile; * }*/ private CProtoFile BuildProtoFile(KGrpcProject grpcKProject, KProtoFile kProtoFile, string protoNamespace) { var protoFile = new CProtoFile(); protoFile.Import.Add("google/protobuf/timestamp.proto"); protoFile.Import.Add("google/protobuf/duration.proto"); protoFile.Import.Add("google/protobuf/descriptor.proto"); protoFile.CSharpNamespace = protoNamespace; protoFile.Option.Add($@"csharp_namespace = ""{protoNamespace}"";"); protoFile.Option.Add($@"(version) = ""1.0.0"";"); var protoService = new CProtoService(protoFile) { ServiceName = $@"{kProtoFile.ProtoFileName}Service" }; protoFile.ProtoService.Add(protoService); return(protoFile); }
public KSolution BuildSolution(KickstartWizardModel kickstartWizardModel) { var solution = new KSolution() { CompanyName = kickstartWizardModel.CompanyName, SolutionName = kickstartWizardModel.SolutionName }; KProtoFile kProtoFile = null; if (kickstartWizardModel.MetadataSource == MetadataSource.Grpc) { kProtoFile = kickstartWizardModel.MetadataSource == MetadataSource.Grpc ? _protoToKProtoConverter.Convert("zzz", kickstartWizardModel.ProtoFileText) : null; //this will override whatever user typed on first standard VS dialog if (kickstartWizardModel.CurrentStep == KickstartWizardModel.Step.ProtoFile) { kickstartWizardModel.SolutionName = InferSolutionName(kProtoFile); kickstartWizardModel.ProjectName = InferProjectName(kProtoFile); } else { } var databaseProject = BuildDatabaseProject(kickstartWizardModel, kProtoFile); solution.Project.Add(databaseProject); var databaseTestProject = BuildDatabaseTestProject(kickstartWizardModel, kProtoFile); solution.Project.Add(databaseTestProject); //_databaseSqlView.Bind(databaseProject); //if (_currentStep == Step.GenerationStart) { var dataLayerProject = BuildDataLayerProject(kickstartWizardModel, databaseProject); var grpcProject = BuildGrpcProject(kickstartWizardModel, databaseProject, dataLayerProject, kProtoFile); solution.Project.Add(grpcProject); solution.Project.Add(dataLayerProject); } } else if (kickstartWizardModel.MetadataSource == MetadataSource.SqlScripts) { var databaseProjectStart = BuildDatabaseProject(kickstartWizardModel, null); var connectionString = "Server=localhost;"; var outputRootPath = string.Empty; var databaseProject = _dbToKSolutionConverter.BuildSqlMeta(connectionString, outputRootPath, databaseProjectStart); var dataLayerProject = BuildDataLayerProject(kickstartWizardModel, databaseProject); solution.Project.Add(databaseProject); solution.Project.Add(dataLayerProject); var grpcProject = BuildGrpcProject(kickstartWizardModel, databaseProject, dataLayerProject, null); grpcProject.CompanyName = kickstartWizardModel.CompanyName; solution.Project.Add(grpcProject); var protoFiles = _dataLayerProjectToKProtoFileConverter.Convert(databaseProject, dataLayerProject, grpcProject); foreach (var pf in protoFiles) { grpcProject.ProtoFile.Add(pf); } //_databaseSqlStep.Bind(databaseProject); var pf3 = protoFiles.FirstOrDefault(); if (pf3 != null) { pf3.ProtoFileText = _protoFileToProtoFileConverter.Convert(pf3.GeneratedProtoFile); // _protoFileView.Bind(pf3); } } if (kickstartWizardModel.CreateGrpcServiceTestClientProject) { solution.Project.Add(new KGrpcServiceClientTestProject { ProjectName = kickstartWizardModel.ProjectName }); } if (kickstartWizardModel.CreateDockerBuildProject) { solution.Project.Add(new KDockerBuildScriptProject { ProjectName = kickstartWizardModel.ProjectName }); } if (kickstartWizardModel.CreateGrpcUnitTestProject) { solution.Project.Add(new KGrpcServiceUnitTestProject { ProjectName = kickstartWizardModel.ProjectName }); } if (kickstartWizardModel.CreateIntegrationTestProject) { solution.Project.Add(new KGrpcServiceIntegrationTestProject { ProjectName = kickstartWizardModel.ProjectName }); } if (kickstartWizardModel.CreateWebAppProject) { solution.Project.Add(new KWebUIProject { ProjectName = kickstartWizardModel.ProjectName }); } if (kickstartWizardModel.CreateDockerComposeProject) { solution.Project.Add(new KDockerComposeProject() { ProjectName = kickstartWizardModel.ProjectName }); } if (kickstartWizardModel.CreateGrpcClientProject) { solution.Project.Add(new KGrpcClientProject() { ProjectName = kickstartWizardModel.ProjectName }); } return(solution); }
private string InferProjectName(KProtoFile kProtoFile) { return(kProtoFile.GeneratedProtoFile.ProtoService.First().ServiceName.Replace("Service", "")); }
public KDataStoreTestProject BuildDatabaseTestProject(KickstartWizardModel kickstartWizardModel, KProtoFile kProtoFile) { var databaseProject = new KDataStoreTestProject { CompanyName = kickstartWizardModel.CompanyName, ProjectName = kickstartWizardModel.ProjectName, Kickstart = kickstartWizardModel.CreateDatabaseTestProject }; databaseProject.DataStoreType = kickstartWizardModel.DatabaseType; return(databaseProject); }
public KDataStoreProject BuildDatabaseProject(KickstartWizardModel kickstartWizardModel, KProtoFile kProtoFile) { KDataStoreProject databaseProject = new KDataStoreProject { CompanyName = kickstartWizardModel.CompanyName, ProjectName = kickstartWizardModel.ProjectName, KickstartCRUDStoredProcedures = false, Kickstart = kickstartWizardModel.CreateDatabaseProject }; databaseProject.GenerateStoredProcAsEmbeddedQuery = kickstartWizardModel.GenerateStoredProcAsEmbeddedQuery; databaseProject.ConvertToSnakeCase = kickstartWizardModel.ConvertToSnakeCase; databaseProject.DataStoreType = kickstartWizardModel.DatabaseType; if (kickstartWizardModel.MetadataSource == MetadataSource.Grpc && !kickstartWizardModel.HasSql()) { databaseProject.InferSqlFromProto(kProtoFile); } else if (kickstartWizardModel.MetadataSource == MetadataSource.SqlScripts || kickstartWizardModel.HasSql()) { databaseProject.SqlTableText = kickstartWizardModel.SqlTableText; databaseProject.SqlTableTypeText = kickstartWizardModel.SqlTableTypeText; databaseProject.SqlStoredProcedureText = kickstartWizardModel.SqlStoredProcText; } return(databaseProject); }
private KGrpcProject BuildGrpcProject(KickstartWizardModel kickstartWizardModel, KDataStoreProject databaseProject, KDataLayerProject dataLayerProject, KProtoFile kProtoFile) { var grpcProject = new KGrpcProject() { CompanyName = kickstartWizardModel.CompanyName, ProjectName = kickstartWizardModel.ProjectName, Kickstart = kickstartWizardModel.CreateGrpcServiceProject }; if (kProtoFile != null) { grpcProject.ProtoFile.Add(kProtoFile); } grpcProject.DependsOnProject.Add(databaseProject); grpcProject.DependsOnProject.Add(dataLayerProject); return(grpcProject); }
internal void Bind(KProtoFile kProtoFile) { this._textBoxProtoFileText.Text = kProtoFile.ProtoFileText; }
public IList <KProtoFile> Convert(KDataStoreProject databaseProject, KDataLayerProject dataLayerProject, KGrpcProject grpcKProject) { var protoFiles = new List <KProtoFile>(); _databaseProject = databaseProject; foreach (var dataLayerInter in dataLayerProject.DataServiceInterface) { //var messagesToAddToBulkRpc = new List<SProtoMessage>(); var kProtoFile = new KProtoFile { ProtoFileName = grpcKProject.ProjectName }; kProtoFile.GeneratedProtoFile = BuildProtoFile(grpcKProject, kProtoFile, $@"{grpcKProject.CompanyName}.{grpcKProject.ProjectName}{grpcKProject.NamespaceSuffix}.{grpcKProject.ProjectSuffix}.Proto.Types"); protoFiles.Add(kProtoFile); foreach (var method in dataLayerInter.Method) { var protoFile = kProtoFile.GeneratedProtoFile; var protoService = protoFile.ProtoService.FirstOrDefault(); var storedProcedure = method.DerivedFrom as CStoredProcedure; var storedProcedureList = method.DerivedFrom as CStoredProcList; if (storedProcedure != null) { if (!storedProcedure.KickstartApi) { continue; } /* * if (!grpcKProject.KickstartCRUD) * { * //filter out anything that is CRUD * if (storedProcedure.DataOperationIs.HasFlag(SOperationIs.CRUD)) * { * continue; * } * * }*/ var rpc = BuildRpcFromStoredProc(protoFile, protoService, method, storedProcedure); //if using Proto first, Rpc may already exist if (!protoService.Rpc.Any(r => r.RpcName == rpc.RpcName)) { protoService.Rpc.Add(rpc); } } else if (storedProcedureList != null && storedProcedureList.List.Any()) { var rpc = BuildBulkRpcFromStoredProcList(protoFile, protoService, method, storedProcedureList); protoService.Rpc.Add(rpc); } else if (method.MethodIs.HasFlag(COperationIs.Bulk)) { // if (addBulkRpc) if (false) { /* * var rpc = new SProtoRpc(protoService) * { * RpcName = $"{method.MethodName}", * OperationIs = SOperationIs.Bulk | SOperationIs.Add | SOperationIs.Update | SOperationIs.Delete * }; * * var request = new SProtoMessage * { * IsRequest = true, * MessageName = $"{rpc.RpcName}Request" * * }; * * rpc.Request = request; * foreach (var message in messagesToAddToBulkRpc) * { * request.ProtoField.Add(new SProtoMessageField(null) { IsScalar = false, Repeated = true, MessageType = message.MessageName, FieldName = $"{message.MessageName}" }); * } * * var response = new SProtoMessage * { * IsResponse = true, * MessageName = $"{rpc.RpcName}Response" * }; * rpc.Response = response; * * * protoService.Rpc.Add(rpc);*/ } } } } return(protoFiles); }