public static String Get(JsonSchema4 schema, Dictionary <String, JsonSchema4> otherSchemas, RelationshipSettings relationship, String ns) { if (relationship.Kind != RelationKind.ManyToMany) { return(null); } var otherSchema = otherSchemas[relationship.OtherModelName]; if (relationship.IsLeftModel) { return(Create(ns, NameGenerator.CreatePascal(schema.GetKeyType().Name), NameGenerator.CreatePascal(schema.GetKeyName()), NameGenerator.CreatePascal(schema.Title), NameGenerator.CreatePascal(otherSchema.GetKeyType().Name), NameGenerator.CreatePascal(otherSchema.GetKeyName()), NameGenerator.CreatePascal(otherSchema.Title))); } else { return(Create(ns, NameGenerator.CreatePascal(otherSchema.GetKeyType().Name), NameGenerator.CreatePascal(otherSchema.GetKeyName()), NameGenerator.CreatePascal(otherSchema.Title), NameGenerator.CreatePascal(schema.GetKeyType().Name), NameGenerator.CreatePascal(schema.GetKeyName()), NameGenerator.CreatePascal(schema.Title))); } }
public static String GetUserPartial(JsonSchema4 schema, String modelNamespace) { String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); return(Create(Model, model, modelNamespace, NameGenerator.CreatePascal(schema.GetKeyName()), schema.GetExtraNamespaces(StrConstants.FileNewline))); }
public static String Get(JsonSchema4 schema) { String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); String Models, models; NameGenerator.CreatePascalAndCamel(schema.GetPluralName(), out Models, out models); return(Create(Model, model, Models, models, NameGenerator.CreateCamel(schema.GetKeyName()))); }
public static String Get(JsonSchema4 schema, String ns) { String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); String Models, models; NameGenerator.CreatePascalAndCamel(schema.GetPluralName(), out Models, out models); String ModelId, modelId; NameGenerator.CreatePascalAndCamel(schema.GetKeyName(), out ModelId, out modelId); return(Create(ns, Model, model, Models, models, schema.GetKeyType().Name, ModelId, modelId)); }
public static async Task <String> Create(JsonSchema4 schema, Dictionary <String, JsonSchema4> others, String ns, bool generated) { bool hasBase = false; var baseWriter = new BaseModelWriter("", CreateAttributeBuilder()); var baseClass = ModelTypeGenerator.Create(schema, schema.GetPluralName(), baseWriter, ns, ns + ".ViewModels", allowPropertyCallback: p => { if (p.CreateViewModel()) { hasBase = hasBase | p.IsAbstractOnViewModel(); return(p.IsAbstractOnViewModel()); } return(false); }); var mainWriter = new MainModelWriter(hasBase ? baseClass : null, "", CreateAttributeBuilder(), new NoAttributeBuilder(), schema.AllowCreated(), schema.AllowModified(), a => { var interfaces = new String[] { a.BaseClassName, } .Concat(a.Writer.GetAdditionalInterfaces()); if (!generated) { a.Builder.AppendLine(GetLinks(schema.GetPluralName())); } a.Builder.AppendLine( $@" public partial class {a.Name}{InterfaceListBuilder.Build(interfaces)} {{"); a.Writer.CreateProperty(a.Builder, NameGenerator.CreatePascal(schema.GetKeyName()), new TypeWriterPropertyInfo(schema.GetKeyType())); } ) { AdditionalUsings = $@"using {ns}.Controllers.Api; using Threax.AspNetCore.Halcyon.Ext.ValueProviders;" + schema.GetExtraNamespaces(StrConstants.FileNewline) }; return(ModelTypeGenerator.Create(schema, schema.GetPluralName(), mainWriter, ns, ns + ".ViewModels", allowPropertyCallback: AllowProperty, additionalProperties: await AdditionalProperties(schema, others))); }
private static async Task <Dictionary <String, JsonProperty> > WriteManySide(JsonSchema4 schema, JsonSchema4 other, RelationshipSettings relationship) { var name = other.GetKeyName() + "s"; //Should be xxId so adding s should be fine var props = new Dictionary <String, JsonProperty>(); if (!schema.Properties.ContainsKey(name)) //Don't write if schema defined property. { props.Add(name, new JsonProperty() { Type = JsonObjectType.Array, Item = await TypeToSchemaGenerator.CreateSchema(other.GetKeyType()), Parent = schema, ExtensionData = relationship.CopyExtensions(), Title = relationship.OriginalPropertyDefinition?.Title }); } return(props); }
public static String Get(JsonSchema4 schema, String ns) { String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); String Models, models; NameGenerator.CreatePascalAndCamel(schema.GetPluralName(), out Models, out models); String ModelId, modelId; NameGenerator.CreatePascalAndCamel(schema.GetKeyName(), out ModelId, out modelId); var additionalAuthorize = ""; String authName = schema.GetAuthorizationRoleString(); if (authName != null) { additionalAuthorize = $", Roles = {authName}"; } return(Create(ns, Model, model, Models, models, additionalAuthorize, schema.GetKeyType().Name, ModelId, modelId, schema.GetExtraNamespaces(StrConstants.FileNewline))); }
private static async Task <Dictionary <String, JsonProperty> > WriteOneSide(JsonSchema4 schema, JsonSchema4 other, RelationshipSettings relationship) { var name = other.GetKeyName(); var props = new Dictionary <String, JsonProperty>(); if (!schema.Properties.ContainsKey(name)) //Don't write if schema defined property. { var propSchema = await TypeToSchemaGenerator.CreateSchema(other.GetKeyType()); props.Add(name, new JsonProperty() { Type = propSchema.Type, Format = propSchema.Format, Parent = schema, ExtensionData = relationship.CopyExtensions(), Title = relationship.OriginalPropertyDefinition?.Title }); } return(props); }
public static String Create(JsonSchema4 schema, Dictionary <String, JsonSchema4> others, String ns) { bool hasBase = false; var baseWriter = new BaseModelWriter("Entity", CreateAttributeBuilder()); var baseClass = ModelTypeGenerator.Create(schema, schema.GetPluralName(), baseWriter, ns, ns + ".Database", allowPropertyCallback: p => { if (p.CreateEntity()) { hasBase = hasBase | p.IsAbstractOnEntity(); return(p.IsAbstractOnEntity()); } return(false); }); var mainWriter = new MainModelWriter(hasBase ? baseClass : null, "Entity", CreateAttributeBuilder(), new NoAttributeBuilder(), schema.AllowCreated(), schema.AllowModified(), a => { var interfaces = new String[] { a.BaseClassName, } .Concat(a.Writer.GetAdditionalInterfaces()); a.Builder.AppendLine( $@" public partial class {a.Name}Entity{InterfaceListBuilder.Build(interfaces)} {{ [Key]" ); a.Writer.CreateProperty(a.Builder, NameGenerator.CreatePascal(schema.GetKeyName()), new TypeWriterPropertyInfo(schema.GetKeyType())); } ) { AdditionalUsings = schema.GetExtraNamespaces(StrConstants.FileNewline) }; return(ModelTypeGenerator.Create(schema, schema.GetPluralName(), mainWriter, ns, ns + ".Database", allowPropertyCallback: AllowProperty, additionalProperties: AdditionalProperties(schema, others))); }
public static String Get(JsonSchema4 schema, String ns) { String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); String Models, models; NameGenerator.CreatePascalAndCamel(schema.GetPluralName(), out Models, out models); String ModelId, modelId; NameGenerator.CreatePascalAndCamel(schema.GetKeyName(), out ModelId, out modelId); String queryProps = ModelTypeGenerator.Create(schema, schema.GetPluralName(), new QueryPropWriter(), schema, ns, ns, allowPropertyCallback: p => { return(p.IsQueryable()); }); String customizer = ModelTypeGenerator.Create(schema, schema.GetPluralName(), new QueryCustomizerWriter(), schema, ns, ns, allowPropertyCallback: p => { return(p.IsQueryable()); }); return(Create(ns, Model, model, Models, models, queryProps, customizer, schema.GetKeyType().GetTypeAsNullable(), ModelId, modelId, schema.GetExtraNamespaces(StrConstants.FileNewline))); }
private static IEnumerable <KeyValuePair <String, JsonProperty> > WriteOneSide(JsonSchema4 schema, JsonSchema4 other, RelationshipSettings relationship) { var name = other.GetKeyName(); if (!schema.Properties.ContainsKey(name)) //Don't write if schema defined property. { yield return(new KeyValuePair <string, JsonProperty> ( key: name, value: new JsonProperty() { Type = JsonObjectType.Object, Format = other.GetKeyType().Name, Parent = schema, ExtensionData = relationship.CopyExtensions(), } )); } name = other.Title; if (!schema.Properties.ContainsKey(name)) //Don't write if schema defined property. { yield return(new KeyValuePair <string, JsonProperty> ( key: name, value: new JsonProperty() { Type = JsonObjectType.Object, Format = other.Title + "Entity", Parent = schema, ExtensionData = relationship.CopyExtensions(), } )); } }
public CreateEntity(JsonSchema4 schema, String args) : base(args) { this.modelIdType = schema.GetKeyType(); this.ModelId = NameGenerator.CreatePascal(schema.GetKeyName()); }
public static String Get(JsonSchema4 schema, String ns, bool generated) { bool hasBase = false; var baseWriter = new QueryBaseModelWriter("Query", QueryPropertiesWriter.CreateAttributeBuilder()) { InheritFrom = new String[] { "PagedCollectionQuery" } }; var baseClass = ModelTypeGenerator.Create(schema, schema.GetPluralName(), baseWriter, ns, ns + ".Database", allowPropertyCallback: p => { if (p.IsQueryable()) { hasBase = hasBase | p.IsAbstractOnQuery(); return(p.IsAbstractOnQuery()); } return(false); }); var baseClassName = "PagedCollectionQuery"; if (hasBase) { baseClassName = $"{BaseModelWriter.CreateBaseClassName(schema.Title, "Query")}"; baseClass = $@" {baseClass} "; } else { baseClass = ""; } String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); String Models, models; NameGenerator.CreatePascalAndCamel(schema.GetPluralName(), out Models, out models); String queryProps = ModelTypeGenerator.Create(schema, schema.GetPluralName(), new QueryPropertiesWriter(), schema, ns, ns, allowPropertyCallback: p => { return(p.IsQueryable() && !p.IsAbstractOnQuery()); }); String queryCreate = ModelTypeGenerator.Create(schema, schema.GetPluralName(), new QueryCreateWriter(), schema, ns, ns, allowPropertyCallback: p => { return(p.IsQueryable()); }); return(Create(ns, Model, model, Models, models, queryProps, queryCreate, schema.GetKeyType().GetTypeAsNullable(), baseClass, baseClassName, NameGenerator.CreatePascal(schema.GetKeyName()), schema.GetExtraNamespaces(StrConstants.FileNewline), generated)); }
public static String Get(JsonSchema4 schema, String ns) { String Model, model; NameGenerator.CreatePascalAndCamel(schema.Title, out Model, out model); String Models, models; NameGenerator.CreatePascalAndCamel(schema.GetPluralName(), out Models, out models); return(Create(ns, Model, model, Models, models, NameGenerator.CreatePascal(schema.GetKeyName()), schema.GetExtraNamespaces(StrConstants.FileNewline))); }
public static String Get(JsonSchema4 schema, String ns, bool generated) { String Model = NameGenerator.CreatePascal(schema.Title); return(Create(ns, Model, NameGenerator.CreatePascal(schema.GetKeyName()), schema.AllowCreated(), schema.AllowModified(), generated, schema.Properties.Values, schema.GetExtraNamespaces(StrConstants.FileNewline))); }