def random_one(self, metadata: Dict, payload: Dict) -> Tuple[bool, Union[Dict, str]]: logger.debug( f"Calling random_one metadata={metadata}, payload={payload}") status, message = validate_schema_or_not( payload, SCHEMAS["random_one"]["payload"]) if not status: return False, message # todo: failure return True, self.content_store.random_one( q=payload["q"], projection=payload["projection"])
def append(self, metadata: Dict, payload: Dict) -> Tuple[bool, str]: logger.debug(f"Calling append metadata={metadata}, payload={payload}") status, message = validate_schema_or_not(payload, SCHEMAS["append"]["payload"]) if not status: logger.info( f"Fails to validate query payload={payload}, message {message}" ) return False, message # todo: failure self.content_store.append(payload["doc"], payload["idempotency_key"]) return True, ''
def count(self, metadata: Dict, payload: Dict) -> Tuple[bool, Union[int, str]]: logger.debug(f"Calling count metadata={metadata} payload={payload}") status, message = validate_schema_or_not(payload, SCHEMAS['count']['payload']) if not status: logger.info( f"Fails to validate count metadata={metadata} payload={payload}" ) return False, message # todo: failure return True, self.content_store.count(payload['q'])
def update_one_binary_string(self, metadata: Dict, payload: Dict) -> Tuple[bool, str]: logger.debug( f"Calling update_one_binary_string metadata={metadata}, payload={payload}" ) status, message = validate_schema_or_not( payload, SCHEMAS["update_one_binary_string"]["payload"]) if not status: return False, message # todo: failure self.content_store.update_one_binary_string(payload["filter_q"], payload["key"], payload["binary_string"]) return True, ''
def query_nearest_hamming_neighbors( self, metadata: Dict, payload: Dict) -> Tuple[bool, List[Dict]]: logger.debug( f"Calling query_nearest_hamming_neighbors metadata={metadata}, payload={payload}" ) status, message = validate_schema_or_not( payload, SCHEMAS["query_nearest_hamming_neighbors"]["payload"]) if not status: logger.info( f"Fails to validate query_nearest_hamming_neighbors payload={payload}, message {message}" ) return False, [] # todo: failure return True, self.content_store.query_nearest_hamming_neighbors( q=payload["q"], binary_string_key=payload["binary_string_key"], from_binary_string=payload["from_binary_string"], max_distance=payload["max_distance"])
def _add_worker(): body = request.json success, message = validate_schema_or_not(instance=body, schema=ADD_WORKER_BODY_SCHEMA) if not success: return jsonify({"status": "error", "message": message}) status, message_or_worker_id = worker_config_store.add( module=body["module"], class_name=body["class_name"], args=body["args"], interval_seconds=body["interval_seconds"]) if not status: return jsonify({ "status": "error", "message": message_or_worker_id }), 400 else: return jsonify({ "status": "ok", "worker_id": message_or_worker_id }), 200
def query(self, metadata: Dict, payload: Dict) -> Tuple[bool, List[Dict]]: logger.debug(f"Calling query metadata={metadata}, payload={payload}") status, message = validate_schema_or_not(payload, SCHEMAS["query"]["payload"]) if not status: logger.info( f"Fails to validate query payload={payload}, message {message}" ) return False, [] limit = payload["limit"] if "limit" in payload else None projection = payload["projection"] if "projection" in payload else None sort = payload["sort"] if "sort" in payload else None datetime_q = payload["datetime_q"] if "datetime_q" in payload else None # todo: query failure return True, self.content_store.query(payload["q"], limit=limit, projection=projection, sort=sort, datetime_q=datetime_q)