Skip to main content

build_inputs

Function build_inputs 

Source
pub fn build_inputs(
    object_types: &HashMap<String, TableObjectType>,
    relationship_fields: &HashMap<String, Vec<RelationshipField>>,
) -> (Vec<InputObject>, HashSet<String>)
Expand description

Every input type the boolean expressions need, ready to register, and every scalar those inputs name.

The second half is not a convenience. A comparison input names scalars its own table may not have a column of – a cast from a geometry names geography, a raster comparison names geometry – and a type the schema mentions and never registers makes the whole schema unbuildable. Reading the names off what was actually generated is the only way that cannot drift from the truth; twice it was patched case by case, and twice it broke again one operator later.

The inputs come back with the comparisons first and the table expressions after, though registration order does not matter to the schema builder – the types refer to each other by name and are resolved once the whole set is present, which is also what makes a recursive _and: [author_bool_exp!] expressible at all.