public string WriteCode(OpenApiSchema schema, string name, string @namespace) { string entityNamespace = Dependencies.Namespace.Entity(Dependencies.Document.Options.RootNamespace); Clear(); GenerateFileHeader(); WriteLine($"using {entityNamespace};"); WriteLine("using Microsoft.EntityFrameworkCore;"); WriteLine("using Microsoft.EntityFrameworkCore.Metadata.Builders;"); WriteLine(); WriteLine($"namespace {@namespace}"); using (OpenBlock()) { string className = Dependencies.Namer.Configuration(name); WriteLine($"public partial class {className} : IEntityTypeConfiguration<{name}>"); using (OpenBlock()) { WriteLine($"public void Configure(EntityTypeBuilder<{name}> builder)"); using (OpenBlock()) { var properties = schema.GetAllPropertiesRecursive(); foreach (var kvp in properties) { if (!kvp.Value.IsArrayOrObject()) { Write($"builder.Property(x => x.{kvp.Key})"); WriteLine(";"); } } } } } return(GetText()); }
public string WriteCode(OpenApiSchema schema, string name, string @namespace) { Clear(); GenerateFileHeader(); WriteLine("using System;"); WriteLine("using System.Collections.Generic;"); WriteLine(); WriteLine($"namespace {@namespace}"); using (OpenBlock()) { string className = Dependencies.Namer.Entity(name); WriteLine($"public partial class {className}"); using (OpenBlock()) { WriteLine($"public {className}()"); var simpleProperties = schema.GetSimpleProperties(); var navigationProperties = schema.GetNavigationProperties(); var allproperties = schema.GetAllPropertiesRecursive(); using (OpenBlock()) { foreach (var kvp in navigationProperties) { string n = StringUtilities.MakePascal(kvp.Key); string t = Dependencies.Schema.ConvertToType(kvp.Value); if (!string.IsNullOrEmpty(t) && t.StartsWith("ICollection", StringComparison.CurrentCultureIgnoreCase)) { t = t.Replace("ICollection", string.Empty); t = t.TrimStart('<'); t = t.TrimEnd('>'); WriteLine($"{n} = new HashSet<{t}>();"); } } } var primaryKeyTypeName = Dependencies.Document.Options.PrimaryKeyTypeName; WriteLine($"public {primaryKeyTypeName} {className}ID {{ get; set; }}"); foreach (var kvp in allproperties) { string n = StringUtilities.MakePascal(kvp.Key); string t = Dependencies.Schema.ConvertToType(kvp.Value); WriteLine(); if (n == className) { n = StringUtilities.MakeCamel(n); } WriteLine($"public {t} {n} {{ get; set; }}"); } } } return(GetText()); }
public static IDictionary <string, OpenApiSchema> GetSimpleProperties(this OpenApiSchema source) { var dictionary = new Dictionary <string, OpenApiSchema>(); foreach ((string name, OpenApiSchema schema) in source.GetAllPropertiesRecursive()) { if (!schema.IsArrayOrObject()) { dictionary[name] = schema; } } return(dictionary); }
public string WriteCode(OpenApiSchema schema, string name, string @namespace) { var nameList = Dependencies.Document.GetSchemaKeys(); string entityNamespace = Dependencies.Namespace.Entity(Dependencies.Document.Options.RootNamespace); Clear(); GenerateFileHeader(); WriteLine("using System;"); WriteLine("using System.Threading;"); WriteLine("using System.Threading.Tasks;"); WriteLine("using System.Collections.Generic;"); WriteLine($"using {entityNamespace};"); WriteLine(); WriteLine($"namespace {@namespace}"); using (OpenBlock()) { string className = Dependencies.Namer.ViewModel(name); string entityName = Dependencies.Namer.Entity(name); WriteLine($"public partial class {className}"); using (OpenBlock()) { var primaryKeyTypeName = Dependencies.Document.Options.PrimaryKeyTypeName; var properties = schema.GetAllPropertiesRecursive(); WriteLine($"public {primaryKeyTypeName} {entityName}ID {{ get; set; }}"); foreach (var kvp in properties) { string n = StringUtilities.MakePascal(kvp.Key); string t = Dependencies.Schema.ConvertToType(kvp.Value); if (t.StartsWith("ICollection<", StringComparison.CurrentCultureIgnoreCase)) { string originalItemType = null; string newItemType = null; string temp = t; originalItemType = temp.Substring(12).TrimEnd('>'); var keys = Dependencies.Document.GetSchemaKeys(); if (keys.Contains(originalItemType)) { newItemType = Dependencies.Namer.ViewModel(originalItemType); t = t.Replace(originalItemType, newItemType); } } if (nameList.Contains(t)) { t = Dependencies.Namer.ViewModel(t); } if (n == className) { n = char.ToLower(n[0]) + n.Substring(1); } WriteLine(); WriteLine($"public {t} {n} {{ get; set; }}"); } } } return(GetText()); }