use crate::{Field, TypeReference, Typespace};
pub fn fallback_recursively(field: &mut Field, schema: &Typespace) {
field.type_ref.fallback_recursively(schema);
}
pub fn make_required(field: &mut Field, _schema: &Typespace) {
if field.type_ref.name() == "std::option::Option" {
if let Some(inner) = field.type_ref.arguments().next().cloned() {
field.type_ref = inner;
}
} else if field.type_ref.name() == "reflectapi::Option" {
let arguments = field.type_ref.arguments().cloned().collect::<Vec<_>>();
field.type_ref = TypeReference::new("std::option::Option", arguments);
}
field.required = true;
}
pub fn make_nonnullable(field: &mut Field, _schema: &Typespace) {
if field.type_ref.name() == "std::option::Option"
|| field.type_ref.name() == "reflectapi::Option"
{
if let Some(inner) = field.type_ref.arguments().next().cloned() {
field.type_ref = inner;
}
}
}
pub fn make_required_and_nonnullable(field: &mut Field, schema: &Typespace) {
make_nonnullable(field, schema);
make_required(field, schema);
}