1

I have a really simple setup but wondering how do I register multiple queries? For example, this is my code so far:

I guess my question is how do I access the GetAllMoviesQuery. When I enter https://localhost:7058/admin/graphql/ or https://localhost:7058/graphql/ I can only see book query not movies.

using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddGraphQLServer()
    .AddQueryType<GetAllBooksQuery>();

builder.Services
    .AddGraphQLServer("foo")
    .AddQueryType<GetAllMoviesQuery>();

var app = builder.Build();

app.MapGraphQL();
app.MapGraphQL("/admin/graphql", schemaName: "foo");

app.MapGet("/health", () =>
{
    return new OkResult();
});

app.Run();

public class Movie
{
    public string Name { get; set; }
}

public class Book
{
    public string Title { get; set; }
    
    public Author Author { get; set; }
}

public class Author
{
    public string Name { get; set; }
}

public class GetAllMoviesQuery
{
    public Movie GetMovies()
    {
        return new Movie
        {
            Name = "Top Gun"
        };
    }
}

public class GetAllBooksQuery
{
    public Book GetBookById(string id)
    {
        return new Book
        {
            Title = id
        };
    }
    
    public Book GetBooks()
    {
        return new Book
        {
            Title = "Hello World",
            Author = new Author {Name = "Foo Bar"}
        };
    }
}
Dr Schizo
  • 4,045
  • 7
  • 38
  • 77

1 Answers1

1

Register the query name in your Program.cs

builder.Services
.AddQueryType(q => q.Name("Query"))
.AddType<MoviesResolver>()
.AddType<BooksResolver>()

Add query classes

MoviesResolvers.cs
[ExtendObjectType(Name="Query")]
public List<Movies> GetAllMoviesQuery()
{
    return List<Movies>{...};
}

BooksResolver.cs
[ExtendObjectType(Name="Query")]
public List<Books> GetAllBooksQuery()
{
    return List<Books>{...};
}
sjokkogutten
  • 2,005
  • 2
  • 21
  • 24