internal static FieldInfo Build(IRootField rootField, string fieldName, string fieldNameDynamic, string typeName, Names names) { var fields = EmptyFields; if (rootField is IArrayField arrayField && arrayField.Fields.Count > 0) { var nestedNames = new Names(); fields = new List <FieldInfo>(arrayField.Fields.Count); foreach (var field in arrayField.Fields) { var nestedName = nestedNames[field]; fields.Add(new FieldInfo(field, nestedName, nestedNames[nestedName.AsDynamic()], $"{typeName}{field.TypeName()}", EmptyFields, names)); } } return(new FieldInfo(rootField, fieldName, fieldNameDynamic, typeName, fields, names)); }
private bool IsValidateableField(IRootField field) { return (field.Partitioning == Partitioning.Invariant && field.RawProperties.Tags?.Contains(tag) == true && (field.RawProperties is BooleanFieldProperties || field.RawProperties is NumberFieldProperties || field.RawProperties is ReferencesFieldProperties || field.RawProperties is StringFieldProperties)); }
private static ContentFieldData?ConvertData(FieldConverter[] converters, IRootField field, ContentFieldData data) { if (converters != null) { for (var i = 0; i < converters.Length; i++) { data = converters[i](data !, field) !; if (data == null) { break; } } } return(data); }
private IValidator CreateFieldValidator(IRootField field, bool isPartial) { var partitioning = partitionResolver(field.Partitioning); var fieldValidator = field.CreateValidator(); var fieldsValidators = new Dictionary <string, (bool IsOptional, IValidator Validator)>(); foreach (var partition in partitioning) { fieldsValidators[partition.Key] = (partition.IsOptional, fieldValidator); } return(new AggregateValidator( field.CreateBagValidator() .Union(Enumerable.Repeat( new ObjectValidator <IJsonValue>(fieldsValidators, isPartial, TypeName(field)), 1)))); }
private IValidator CreateFieldValidator(IRootField field, bool isPartial) { var partitioning = partitionResolver(field.Partitioning); var fieldValidator = new FieldValidator(ValidatorsFactory.CreateValidators(field).ToArray(), field); var fieldsValidators = new Dictionary <string, (bool IsOptional, IValidator Validator)>(); foreach (var partition in partitioning) { fieldsValidators[partition.Key] = (partition.IsOptional, fieldValidator); } var isLanguage = field.Partitioning.Equals(Partitioning.Language); var type = isLanguage ? "language" : "invariant value"; return(new ObjectValidator <IJsonValue>(fieldsValidators, isPartial, type, JsonValue.Null)); }
private IValidator CreateFieldValidator(IRootField field, bool isPartial) { var fieldValidator = CreateFieldValidator(field); var partitioning = partitionResolver(field.Partitioning); var partitioningValidators = new Dictionary <string, (bool IsOptional, IValidator Validator)>(); foreach (var partitionKey in partitioning.AllKeys) { var optional = partitioning.IsOptional(partitionKey); partitioningValidators[partitionKey] = (optional, fieldValidator); } var typeName = partitioning.ToString() !; return(new AggregateValidator( CreateFieldValidators(field) .Union(Enumerable.Repeat( new ObjectValidator <IJsonValue>(partitioningValidators, isPartial, typeName), 1)), log)); }
private static ClrValue TryGetValue(IRootField field, ContentData data) { var value = JsonValue.Null; if (data.TryGetValue(field.Name, out var fieldValue)) { if (fieldValue.TryGetValue(InvariantPartitioning.Key, out var temp) && temp != null) { value = temp; } } switch (field.RawProperties) { case BooleanFieldProperties when value is JsonBoolean boolean: return(boolean.Value); case BooleanFieldProperties when value is JsonNull: return(ClrValue.Null); case NumberFieldProperties when value is JsonNumber number: return(number.Value); case NumberFieldProperties when value is JsonNull: return(ClrValue.Null); case StringFieldProperties when value is JsonString @string: return(@string.Value); case StringFieldProperties when value is JsonNull: return(ClrValue.Null); case ReferencesFieldProperties when value is JsonArray array && array.FirstOrDefault() is JsonString @string: return(@string.Value); } return(null); }
internal static FieldInfo Build(IRootField rootField, string typeName, Names names, Names parentNames) { var fieldInfos = EmptyFields; if (rootField is IArrayField arrayField) { var fieldNames = new Names(); fieldInfos = new List <FieldInfo>(arrayField.Fields.Count); foreach (var nestedField in arrayField.Fields.ForApi()) { fieldInfos.Add(new FieldInfo( nestedField, names[$"{typeName}{nestedField.TypeName()}"], names, fieldNames, EmptyFields)); } } return(new FieldInfo(rootField, typeName, names, parentNames, fieldInfos)); }
private static bool CanUpdateRoot(IRootField source, IRootField target) { return(CanUpdate(source, target) && source.Partitioning == target.Partitioning); }
private static string TypeName(IRootField field) { var isLanguage = field.Partitioning.Equals(Partitioning.Language); return(isLanguage ? "language" : "invariant value"); }