reactive_graph_graphql_schema/directives/
random_uuid_directive.rs1use async_graphql::Context;
2use async_graphql::CustomDirective;
3use async_graphql::Directive;
4use async_graphql::ResolveFut;
5use async_graphql::ServerResult;
6use async_graphql::Value;
7use uuid::Uuid;
8
9struct RandomUuidDirective {}
10
11#[async_trait::async_trait]
12impl CustomDirective for RandomUuidDirective {
13 async fn resolve_field(&self, _ctx: &Context<'_>, resolve: ResolveFut<'_>) -> ServerResult<Option<Value>> {
14 resolve.await.map(|_| Some(Value::String(Uuid::new_v4().to_string())))
15 }
16}
17
18#[Directive(location = "Field")]
19pub fn random_uuid() -> impl CustomDirective {
20 RandomUuidDirective {}
21}