def queryRequests(self, query, pageNumber, pageSize): '''Queries requests Queries the data according the the given filtering options, and returns the list of records (as lists) of data. Args: query: the query string pageNumber: the page number pageSize: the page size Returns: The list of records of data Raises: PersistenceException: There is DB error ''' try: claimType = ClaimTypeFactory.load("partner_request") query_parser = RedisQueryParser(claimType) parse_tree = query_parser.parse(query) query_executor = RedisQueryExecutor(self.connection, claimType) object_ids = query_executor.visit(parse_tree) if pageNumber: start = (pageNumber-1) * pageSize end = start + pageSize object_ids = object_ids[start:end] for id in object_ids: self.cursor.hgetall(claimType.tablename + ":" + id.decode()) claims = self.cursor.execute() for i in range(len(claims)): claims[i] = self._convert_to_tuple(claimType, claims[i]) return claims except RedisQueryParserError as e: raise PersistenceException(*e.args) except RedisError as e: raise PersistenceException(*e.args)
def updateRequests(self, setStr, query): '''Updates requests Updates the data according the the given filtering options. Args: setStr: the updated fields and values query: the query string Raises: PersistenceException: There is DB error ''' try: claimType = ClaimTypeFactory.load("partner_request") query_parser = RedisQueryParser(claimType) parse_tree = query_parser.parse(query) query_executor = RedisQueryExecutor(self.connection, claimType) object_ids = query_executor.visit(parse_tree) set_key = setStr.split('=')[0].encode() set_val = setStr.split('=')[1].encode() for id in object_ids: self.cursor.hgetall(claimType.tablename + ":" + id.decode()) claims = self.cursor.execute() for claim in claims: if claim is not None: self.cursor.srem(claimType.tablename + ":" + set_key.decode() + ":" + claim[set_key].decode(), int(id.decode())) self.cursor.sadd(claimType.tablename + ":" + set_key.decode() + ":" + set_val.decode(), int(id.decode())) claim[set_key] = set_val self.cursor.hmset(claimType.tablename + ":" + id.decode(), self._convert_to_decode(claim)) except RedisQueryParserError as e: raise PersistenceException(*e.args) except RedisError as e: raise PersistenceException(*e.args)