examples.rst @3cc9c3ce-10a6-4e55-b84f-ac2c323650c7/upstream — view markup · raw · history · blame
Schema Examples
Search all Models with Union
class Book(SQLAlchemyObjectType): class Meta: model = BookModel interfaces = (relay.Node,) class Author(SQLAlchemyObjectType): class Meta: model = AuthorModel interfaces = (relay.Node,) class SearchResult(graphene.Union): class Meta: types = (Book, Author) class Query(graphene.ObjectType): node = relay.Node.Field() search = graphene.List(SearchResult, q=graphene.String()) # List field for search results # Normal Fields all_books = SQLAlchemyConnectionField(Book.connection) all_authors = SQLAlchemyConnectionField(Author.connection) def resolve_search(self, info, **args): q = args.get("q") # Search query # Get queries bookdata_query = BookData.get_query(info) author_query = Author.get_query(info) # Query Books books = bookdata_query.filter((BookModel.title.contains(q)) | (BookModel.isbn.contains(q)) | (BookModel.authors.any(AuthorModel.name.contains(q)))).all() # Query Authors authors = author_query.filter(AuthorModel.name.contains(q)).all() return authors + books # Combine lists schema = graphene.Schema(query=Query, types=[Book, Author, SearchResult])
Example GraphQL query
book(id: "Qm9vazow") { id title } search(q: "Making Games") { __typename ... on Author { fname lname } ... on Book { title isbn } }