Source code for weaviate.gql.multi_get

"""
GraphQL `Get` command.
"""

from typing import List
from weaviate.gql.filter import (
    GraphQL,
)
from weaviate.connect import Connection
from .get import GetBuilder


[docs] class MultiGetBuilder(GraphQL): """ GetBuilder class used to create GraphQL queries. """ def __init__(self, get_builder: List[GetBuilder], connection: Connection): """ Initialize a MultiGetBuilder class instance. Parameters ---------- get_builder : list of GetBuilder GetBuilder objects for a single request each. connection : weaviate.connect.Connection Connection object to an active and running Weaviate instance. Examples -------- To create a 'multi_get' object using several 'get' request at the same time use: >>> client.query.multi_get( ... [ ... client.query.get("Ship", ["name"]).with_alias("one"), ... client.query.get("Ship", ["size"]).with_alias("two"), ... client.query.get("Person", ["name"]) ... ] with_alias() needs to be used if the same 'class_name' is used twice during the same 'multi_get' request. Raises ------ TypeError If 'get_builder' is of wrong type. """ get_names = [] super().__init__(connection) if not isinstance(get_builder, List): raise TypeError(f"get_builder must be of type List but was {type(get_builder)}") for get in get_builder: if not isinstance(get, GetBuilder): raise TypeError( f"All objects in 'get_builder' must be of type 'GetBuilder' but at least one object was {type(get)}" ) if get.name not in get_names: get_names.append(get.name) else: raise TypeError( f"Objects in 'get_builder' can not have duplicate names but two were named: '{get.name}'. Queries can be renamed using an alias." ) self.get_builder: List[GetBuilder] = get_builder
[docs] def build(self) -> str: """ Build query filter as a string. Returns ------- str The GraphQL query as a string. """ query = "{Get{" for get in self.get_builder: query += get.build(wrap_get=False) return query + "}}"