reactive_graph_dynamic_graph_impl/object/relation/mutation/
mod.rs

1use crate::object::relation::mutation::delete::relation_delete_field;
2use crate::object::relation::mutation::export::relation_export_field;
3use crate::object::relation::mutation::trigger::relation_trigger_field;
4use crate::object::relation::mutation::update::relation_update_field;
5use crate::object::types::DynamicGraphTypeDefinition;
6use async_graphql::dynamic::Object;
7use async_graphql::dynamic::SchemaBuilder;
8use reactive_graph_dynamic_graph_api::SchemaBuilderContext;
9use reactive_graph_graph::RelationType;
10
11pub mod delete;
12pub mod export;
13pub mod trigger;
14pub mod update;
15
16pub fn register_relation_type_mutation_objects(mut schema: SchemaBuilder, context: &SchemaBuilderContext) -> SchemaBuilder {
17    for (_, relation_type) in context.relation_type_manager.get_all() {
18        schema = schema.register(create_relation_type_mutation_object(&relation_type));
19    }
20    schema
21}
22
23pub fn create_relation_type_mutation_object(relation_type: &RelationType) -> Object {
24    let dy_ty = DynamicGraphTypeDefinition::from(&relation_type.ty);
25    let mut object = Object::new(dy_ty.mutation_type_name());
26    if let Some(update_field) = relation_update_field(relation_type) {
27        object = object.field(update_field);
28    }
29    if let Some(trigger_field) = relation_trigger_field(relation_type) {
30        object = object.field(trigger_field);
31    }
32    object = object.field(relation_export_field());
33    object = object.field(relation_delete_field());
34    object
35}