from __future__ import annotations from pydantic import ValidationError from quart import Blueprint, jsonify from app.api.service import ElasticSearchManager from app.api.v1.utils import ApiDependencies from app.api.v1.utils import ElasticSearchRequest from app.api.v1.utils import parse_json, validation_error_response def create_elasticsearch_bp(deps: ApiDependencies) -> Blueprint: bp = Blueprint("elasticsearch", __name__) @bp.route("/es_search", methods=["POST"]) async def es_search(): try: obj, _ = await parse_json(ElasticSearchRequest) except ValidationError as e: payload, status = validation_error_response(e) return jsonify(payload), status manager = ElasticSearchManager(config=deps.config) result = await manager.search(keywords=obj.keywords, size=obj.size) return jsonify({"code": 0, "message": "success", "data": result}) return bp