Function tauri_plugin_graphql::init
source · [−]pub fn init<R, Query, Mutation, Subscription, S>(
schema: RootNode<'static, Query, Mutation, Subscription, S>
) -> TauriPlugin<R> where
R: Runtime,
Query: GraphQLTypeAsync<S, Context = Context<R>> + Send + 'static,
Query::TypeInfo: Send + Sync,
Mutation: GraphQLTypeAsync<S, Context = Context<R>> + Send + 'static,
Mutation::TypeInfo: Send + Sync,
Subscription: GraphQLSubscriptionType<S, Context = Context<R>> + Send + 'static,
Subscription::TypeInfo: Send + Sync,
S: ScalarValue + Send + Sync + 'static, Expand description
Initializes the GraphQL plugin
This plugin exposes a juniper GraphQL endpoint via Tauri’s IPC system, allowing the frontend to invoke backend functionality through GraphQL. This does not open a web server.
The schema argument must be a valid juniper::RootNode.
Example
use juniper::{EmptyMutation, EmptySubscription, FieldResult, GraphQLObject, RootNode, graphql_object};
use tauri_plugin_graphql::Context as GraphQLContext;
#[derive(GraphQLObject)]
struct User {
id: i32,
name: String
}
struct Query;
// Implement resolvers for all possible queries.
#[graphql_object(context = GraphQLContext)]
impl Query {
fn me() -> FieldResult<User> {
Ok(User {
id: 1,
name: "Luke Skywalker".to_string(),
})
}
}
// A shorter alias for our apps schema. Note that this schema has no mutations or subscriptions,
// so we specify `EmptyMutation` and `EmptySubscription` respectively.
type Schema = RootNode<
'static,
Query,
EmptyMutation<GraphQLContext>,
EmptySubscription<GraphQLContext>
>;
let schema = Schema::new(
Query,
EmptyMutation::<GraphQLContext>::new(),
EmptySubscription::<GraphQLContext>::new(),
);
tauri::Builder::default()
.plugin(tauri_plugin_graphql::init(schema));