internal EdmTypeVisitor(EdmTypeFactory typeFactory) { this.typeFactory = typeFactory; }
public static EdmComplexType BuildEdmType(this Schema schema, bool withHidden, PartitionResolver partitionResolver, EdmTypeFactory typeFactory) { Guard.NotNull(typeFactory, nameof(typeFactory)); Guard.NotNull(partitionResolver, nameof(partitionResolver)); var(edmType, _) = typeFactory("Data"); var visitor = new EdmTypeVisitor(typeFactory); foreach (var field in schema.FieldsByName.Values) { if (!field.IsForApi(withHidden)) { continue; } var fieldEdmType = field.Accept(visitor); if (fieldEdmType == null) { continue; } var(partitionType, created) = typeFactory($"Data.{field.Name.ToPascalCase()}"); if (created) { var partitioning = partitionResolver(field.Partitioning); foreach (var partitionKey in partitioning.AllKeys) { partitionType.AddStructuralProperty(partitionKey.EscapeEdmField(), fieldEdmType); } } edmType.AddStructuralProperty(field.Name.EscapeEdmField(), new EdmComplexTypeReference(partitionType, false)); } return(edmType); }
public static IEdmTypeReference?BuildType(IField field, EdmTypeFactory factory) { var args = new Args(factory); return(field.Accept(Instance, args)); }
public Args(EdmTypeFactory factory) { Factory = factory; }
public Args(EdmTypeFactory factory, int level) { Factory = factory; Level = level; }
public static IEdmTypeReference?BuildType(IField field, EdmTypeFactory factory, ResolvedComponents components) { var args = new Args(factory, components); return(field.Accept(Instance, args)); }
public sealed record Args(EdmTypeFactory Factory, ResolvedComponents Components, int Level = 0);