public void GeneratePocos(CDBM db, CSharpProject p, CUsing NamespaceName, TextWriter mensajes) { foreach (CTableM t in db.lTable) { p.AddCSharpFile(PocoName(t.Name), NamespaceName); CClass c = p.AddClass(PocoName(t.Name)); c.lUsing.Add(CSharpStandarUsing.System); CConstructor consVacio = new CConstructor(c, CSharpVisibility.cvPublic); CConstructor cons = new CConstructor(c, CSharpVisibility.cvPublic); //Se añaden al final por estética de la clase generada foreach (CFieldM f in t.lFieldAll) { CType aux = CGenerator.SqlServerTD2CSharp(f.Td, f.IsNullable); if (aux.Equals(CSharpPrimitiveType.cDateTime)) { c.lUsing.Add(CSharpStandarUsing.System); } c.AddField(new CField(f.Name, aux, CSharpVisibility.cvPublic)); cons.AddParam(SUtil.LowerFirst(f.Name), CGenerator.SqlServerTD2CSharp(f.Td, f.IsNullable)); cons.AddSentence(new CTextualSentence($"this.{f.Name} = {SUtil.LowerFirst(f.Name)};")); } c.AddConstructor(consVacio); c.AddConstructor(cons); } mensajes.WriteLine("Pocos generados en: " + p.RootDirectory.ActualDirectory.FullName); }
private CClass BuildBaseDataServiceClass(CInterface dbProviderInterface) { var dataService = new CClass($"BaseDataService") { IsAbstract = true }; dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = dbProviderInterface.Namespace }); dataService.Namespace = new CNamespace { NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.DataServices.Base" }; dataService.Field.Add(new CField { AccessModifier = CAccessModifier.Protected, FieldName = "DbProvider", FieldType = $"I{_dataLayerKProject.ProjectName}DbProvider", IsReadonly = true }); var staticConstructor = new CConstructor { IsStatic = true, AccessModifier = CAccessModifier.Private, ConstructorName = "BaseDataService" }; dataService.Constructor.Add(staticConstructor); var constructor = new CConstructor { ConstructorName = dataService.ClassName, AccessModifier = CAccessModifier.Protected }; constructor.Parameter.Add(new CParameter { ParameterName = "dbProvider", Type = $"I{_dataLayerKProject.ProjectName}DbProvider" }); constructor.CodeSnippet = "DbProvider = dbProvider ?? throw new ArgumentException(nameof(dbProvider));"; dataService.Constructor.Add(constructor); return(dataService); }
public void Visit(CConstructor constructor) { _constructorVisitor.Visit(this, constructor); }
private CClass BuildDataServiceClass(CInterface dataServiceInterface, CInterface dataProviderInterface, List <CClass> dtoClasses) { var dataService = new CClass($"{_dataLayerKProject.ProjectName}{_dataLayerKProject.ProjectSuffix}Service") { Namespace = new CNamespace { NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.{_dataLayerKProject.ProjectSuffix}.DataServices" }, IsAbstract = false, InheritsFrom = new CClass("BaseDataService"), Implements = new List <CInterface> { new CInterface { InterfaceName = dataServiceInterface.InterfaceName } } }; dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System.Collections.Generic" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System.Data" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System.Linq" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System.Reflection" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System.Threading.Tasks" } }); //dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "Dapper" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.DataServices.Base" } }); //dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.Extensions" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.Entities" } }); dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = dataProviderInterface.Namespace }); /* * if (ConnectsToDatabaseType == DatabaseTypes.Postgres) * { * dataService.NamespaceRef.Add(new CNamespaceRef * { * ReferenceTo = new CNamespace { NamespaceName = "Npgsql" } * }); * }*/ //dataService.Field.Add(new SField() { FieldName = "DefaultPageNumber", FieldType = "int", IsReadonly = false }); //dataService.Field.Add(new SField() { FieldName = "DefaultPageSize", FieldType = "int", IsReadonly = false }); var constructor = new CConstructor { IsStatic = false, ConstructorName = dataService.ClassName, CodeSnippet = "//empty constructor" }; constructor.Parameter.Add(new CParameter { PassToBaseClass = true, ParameterName = "dbProvider", Type = $"I{_dataLayerKProject.ProjectName}DbProvider" }); dataService.Constructor.Add(constructor); var methods = GetDataServiceMethods(); foreach (var m in methods) { m.CodeSnippet = "throw new NotImplementedException();"; } dataService.Method.AddRange(methods); //todo: clean this up // if (dtoClasses.Count > 0) // dataService.NamespaceRef.Add(_dataProject.BuildNamespaceRefForType(dtoClasses.First().ClassName)); return(dataService); }
private CClass BuildDataHealthCheckClass(CInterface dataHealthCheckInterface, CClass baseDataService, CInterface dbProviderInterface) { var @class = new CClass("DataHealthCheckService") { AccessModifier = CAccessModifier.Public, Implements = new List <CInterface>() { dataHealthCheckInterface }, InheritsFrom = baseDataService }; @class.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System" } }); @class.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "System.Threading.Tasks" } }); /* * @class.NamespaceRef.Add(new CNamespaceRef * { * ReferenceTo = new CNamespace { NamespaceName = "Dapper" } * }); */ @class.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = baseDataService.Namespace }); @class.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = dbProviderInterface.Namespace }); @class.Namespace = new CNamespace { NamespaceName = dataHealthCheckInterface.Namespace.NamespaceName }; var constructor = new CConstructor { AccessModifier = CAccessModifier.Public, ConstructorName = "DataHealthCheckService", Parameter = new List <CParameter> { new CParameter { Type = dbProviderInterface.InterfaceName, ParameterName = "dbProvider", PassToBaseClass = true }, }, CodeSnippet = "//Empty Constructor" }; @class.Constructor.Add(constructor); var methodCheck = new CMethod { ReturnType = "Task<bool>", MethodName = "Check", IsAsync = true, AccessModifier = CAccessModifier.Public }; /* * methodCheck.CodeSnippet = * @"using var connection = DbProvider.GetConnection(); * * return await connection.QueryFirstAsync<bool>(""select 1"").ConfigureAwait(false); * "; */ methodCheck.CodeSnippet = "throw new NotImplementedException();"; @class.Method.Add(methodCheck); return(@class); }
public void Visit(IVisitor visitor, CConstructor constructor) { string staticString = constructor.IsStatic ? "static " : string.Empty; var accessModifier = constructor.IsStatic ? string.Empty : $"{constructor.AccessModifier.GetString()} "; _codeWriter.Write($"{accessModifier}{staticString}{constructor.ConstructorName}("); var first = true; foreach (var param in constructor.Parameter) { if (!first) { _codeWriter.Write(", "); } visitor.VisitCParameter(param); first = false; } _codeWriter.Write(")"); var passToBaseClass = constructor.Parameter.Where(p => p.PassToBaseClass); if (passToBaseClass.Any()) { _codeWriter.Write(" : base("); var firstParameter = true; foreach (var parameter in passToBaseClass) { if (!firstParameter) { _codeWriter.Write(", "); } firstParameter = false; _codeWriter.Write($"{parameter.ParameterName}"); } _codeWriter.Write(")"); } { _codeWriter.WriteLine(string.Empty); _codeWriter.WriteLine("{"); _codeWriter.Indent(); if (!string.IsNullOrEmpty(constructor.CodeSnippetFile) || !string.IsNullOrEmpty(constructor.CodeSnippet)) { if (!string.IsNullOrEmpty(constructor.CodeSnippet)) { _codeWriter.WriteLine(constructor.CodeSnippet); } if (!string.IsNullOrEmpty(constructor.CodeSnippetFile)) { var snippetService = new SnippetService(); _codeWriter.WriteLine(snippetService.GetCodeSnippet(constructor.ConstructorName, constructor.CodeSnippetFile)); } } else { //_codeWriter.WriteLine("throw new NotImplementedException();"); } _codeWriter.Unindent(); _codeWriter.WriteLine("}"); _codeWriter.WriteLine(); } }