// Copyright 2026 Leo Cheng
// SPDX-License-Identifier: Apache-2.0
///|
/// A subgraph written as annotations: `schema.g.mbt` comes from `cmd/gql`, and gives
/// `register`, `register_subscriptions` and `register_federation`.
///
/// moon run src/examples/26-annotated-subgraph
fn main {
let schema = @moongql.Schema::new()
let resolvers = @moongql.Resolvers::new()
let subscribers = @moongql.Subscribers::new()
register(schema, resolvers)
register_subscriptions(schema, resolvers, subscribers)
let federation = @moongql.Federation::new(v2=true)
register_federation(federation)
federation.apply(schema, resolvers)
let ask = (query : String, context : Json) => {
let answer = @moongql.execute(schema, resolvers, query, context~)
println(@json.to_json(answer).stringify())
}
ask("{ hello }", Json::null())
ask("{ secret }", Json::null())
ask("{ secret }", Json::string("ada"))
ask(
"{ _entities(representations: [{ __typename: \"User\", id: \"1\" }]) { ... on User { name } } }",
Json::null(),
)
println(federation.sdl(schema).contains("@shareable"))
}