Dynamic Props
When Warpgrapher auto-generates a CRUD endpoint, the values of Node and Relationship properties are retreived from the database and returned in a query. In some cases, however, it may be necessary to perform real-time computations to derive the value of a prop. We call these type of properties "dynamic properties", and Warpgrapher provides a mechanism to execute custom logic to resolve the value of the prop.
Usage
1. Mark a properties as dynamic by setting the resolver field
model:
- name: Project
props:
- name: name
type: String
- name: points
type: Int
resolver: resolve_project_points
";
2. Define custom logic that resolve the prop value
Box::pin(async move {
// compute value
let points = 5;
facade.resolve_scalar(points)
})
}
3. Add prop resolver when building Engine
let mut resolvers = Resolvers::<AppRequestContext>::new();
resolvers.insert(
"resolve_project_points".to_string(),
Box::new(resolve_project_points),
);
// create warpgrapher engine
let engine: Engine<AppRequestContext> = Engine::new(config, db)
.with_resolvers(resolvers)
.build()
.expect("Failed to build engine");