// Generated by moongql from schema.mbt. Edit those files, not this one.
///|
pub fn register(schema : @moongql.Schema, resolvers : @moongql.Resolvers) -> Unit {
let gql_user = schema.object("User")
gql_user.field("id", NonNull(Scalar("String")))
gql_user.field("name", NonNull(Scalar("String")))
let gql_query = match schema.type_by_name(schema.query) {
Some(t) => t
None => schema.object(schema.query)
}
gql_query.field("hello", NonNull(Scalar("String")))
resolvers.field(gql_query.name, "hello", _ => @moongql.ToGql::to_gql(hello()))
gql_query.field("secret", NonNull(Scalar("String")))
resolvers.field(
gql_query.name, "secret", info => {
if !signed_in(info) {
raise @moongql.not_permitted()
}
@moongql.ToGql::to_gql(secret())
},
)
}
///|
pub fn register_subscriptions(
schema : @moongql.Schema,
resolvers : @moongql.Resolvers,
subscribers : @moongql.Subscribers,
) -> Unit {
let gql_subscription = match schema.subscription {
Some(n) => {
match schema.type_by_name(n) {
Some(t) => t
None => schema.object(n)
}
}
None => {
schema.set_subscription("Subscription")
schema.object("Subscription")
}
}
gql_subscription.field_args(
"countdown",
[("from", NonNull(Scalar("Int")))],
NonNull(Scalar("Int")),
)
subscribers.field(
gql_subscription.name, "countdown", info => {
countdown(info.read("from")).map(e => @moongql.ToGql::to_gql(e))
},
)
resolvers.field(gql_subscription.name, "countdown", info => info.parent)
}
///|
pub fn register_federation(federation : @moongql.Federation) -> Unit {
federation.entity(
name="User",
key="id",
resolve=(rep, _) => {
@moongql.ToGql::to_gql(user_by_id(@moongql.read(rep, "id")))
},
)
federation.shareable("User", "name")
}
///|
pub impl @moongql.ToGql for User with fn to_gql(self) {
{
"__typename": "User",
"id": @moongql.ToGql::to_gql(self.id),
"name": @moongql.ToGql::to_gql(self.name),
}
}
///|
pub impl @moongql.FromGql for User with fn from_gql(v) {
User::{ id: @moongql.read(v, "id"), name: @moongql.read(v, "name") }
}
///|
pub extend User with @moongql.ToGql::{ to_gql }
///|
pub extend User with @moongql.FromGql::{ from_gql }