update log and delete endpoint

This commit is contained in:
charlene tau express 2025-04-09 16:24:26 +08:00
parent 5e0e696a11
commit 7b76c8cfef
2 changed files with 80 additions and 0 deletions

View File

@ -8,8 +8,14 @@ from qdrant_client.http import models
from qdrant_client.models import PointStruct
from werkzeug.exceptions import BadRequest
from qdrant_services.qdrant import Qdrant
from config import LOGGING_LEVEL, LOGGING_FORMAT
logging.basicConfig(
level=LOGGING_LEVEL,
format=LOGGING_FORMAT,
)
logger = logging.getLogger(__name__)
# load_dotenv()
@ -72,6 +78,74 @@ def add():
return Response(status=202)
@app.post("/delete")
def delete():
if request.content_type == 'application/json':
try:
data = request.get_json(force=True)
if data is None:
raise BadRequest
except BadRequest:
return jsonify({"error": "Invalid JSON"}), 400
else:
data = request.form.to_dict()
id = data.get("id", None)
filter_ = data.get("filter", None)
wait = data.get("wait", True)
if id is None and filter_ is None:
return jsonify({"error": "id or filter is required"}), 400
if id is not None and filter_ is not None:
return jsonify({"error": "id and filter cannot be used together"}), 400
try:
if id:
result = Qdrant.get_client().delete(
points_selector=models.PointIdsList(
points=[id],
),
wait=wait,
)
if filter_:
filter_ = json.loads(filter_)
filter_ = filter_[0]
if filter_['type'] != 'match':
return jsonify({"error": "unsupported filter type"}), 400
f = models.Filter(
must=[
models.FieldCondition(
key=filter_['key'], match=models.MatchValue(value=filter_['value'])
),
],
)
filter_ = f
result = Qdrant.get_client().delete(
points_selector=models.FilterSelector(
filter=filter_,
),
wait=wait,
)
if wait:
return jsonify({"message": "Success"}),200
else:
return jsonify({"message": "Accepted"}), 202
except Exception as e:
logger.error(f"Qdrant deletion failed: {str(e)}")
return jsonify({"error": "Failed to delete from Qdrant"}), 500
@app.get("/recommend")
def recommend():
try:

6
src/config.py Normal file
View File

@ -0,0 +1,6 @@
import logging
from util.config import env
LOGGING_LEVEL = env('LOGGING_LEVEL', default=logging.INFO)
LOGGING_FORMAT = env('LOGGING_FORMAT', default='%(asctime)s %(name)s %(levelname)s %(message)s')