示例#1
0
    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"])
示例#2
0
    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, ''
示例#3
0
    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'])
示例#4
0
    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, ''
示例#5
0
    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"])
示例#6
0
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
示例#7
0
    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)