def Query(self, query, filters, orders): """Perform a query on this pseudo-kind. Args: query: the original datastore_pb.Query filters: the filters from query orders: the orders from query Returns: A query cursor to iterate over the query results, or None if the query is invalid. """ namespace_range = datastore_stub_util.ParseNamespaceQuery( query, filters, orders) app_str = query.app() namespace_entities = [] namespaces = self._stub._DatastoreSqliteStub__namespaces for app_id, namespace in sorted(namespaces): if app_id == app_str and namespace_range.Contains(namespace): if namespace: ns_id = namespace else: ns_id = datastore_types._EMPTY_NAMESPACE_ID namespace_entities.append( MakeEntityForQuery(query, self.name, ns_id)) return datastore_stub_util._ExecuteQuery(namespace_entities, query, [], [], [])
def Query(self, entities, query, filters, orders): """Perform a query on this pseudo-kind. Args: entities: all the app's entities. query: the original datastore_pb.Query. filters: the filters from query. orders: the orders from query. Returns: (results, remaining_filters, remaining_orders) results is a list of entity_pb.EntityProto remaining_filters and remaining_orders are the filters and orders that should be applied in memory """ namespace_range = datastore_stub_util.ParseNamespaceQuery( query, filters, orders) app_str = query.app() namespaces = set() for app_namespace, _ in entities: (app_id, namespace) = datastore_types.DecodeAppIdNamespace(app_namespace) if app_id == app_str and namespace_range.Contains(namespace): namespaces.add(namespace) namespace_entities = [] for namespace in namespaces: if namespace: namespace_e = datastore.Entity(self.name, name=namespace, _app=query.app()) else: namespace_e = datastore.Entity( self.name, id=datastore_types._EMPTY_NAMESPACE_ID, _app=query.app()) namespace_entities.append(namespace_e._ToPb()) return (namespace_entities, [], [])