Fetches existing prepared query

        Parameters:
            query (ObjectID): Query ID
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
            watch (Blocking): Do a blocking query
            consistency (Consistency): Force consistency
        Returns:
            Object: Query definition
        Raises:
            NotFound: Query does not exist

async def read(self, query, *, dc=None, watch=None, consistency=None):
        """Fetches existing prepared query

        Parameters:
            query (ObjectID): Query ID
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
            watch (Blocking): Do a blocking query
            consistency (Consistency): Force consistency
        Returns:
            Object: Query definition
        Raises:
            NotFound: Query does not exist
        """
        query_id = extract_attr(query, keys=["ID"])

        response = await self._api.get("/v1/query", query_id, params={
            "dc": dc}, watch=watch, consistency=consistency)
        result = response.body[0]
        return result