summaryrefslogtreecommitdiff
path: root/src/collector/main.py
diff options
context:
space:
mode:
authorVictor Näslund <victor@sunet.se>2022-11-16 14:23:09 +0100
committerVictor Näslund <victor@sunet.se>2022-11-16 14:23:09 +0100
commit4a56b3aae4114db731eff725e2c6292371a9b8ae (patch)
tree250f4dd1c4b9a0775867163a5edaee76638b261f /src/collector/main.py
parent6de5476ae2622fad5dc5c0d33e2b4bb9c3e9a6f1 (diff)
Better status codes and error handling
Diffstat (limited to 'src/collector/main.py')
-rwxr-xr-xsrc/collector/main.py23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/collector/main.py b/src/collector/main.py
index 72c4ef7..a2d55c7 100755
--- a/src/collector/main.py
+++ b/src/collector/main.py
@@ -48,10 +48,7 @@ async def search(search_data: SearchInput) -> JSONResponse:
"""
data = await db.find(search_data)
- if data is None:
- return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=400)
-
- return JSONResponse(content={"status": "success", "docs": json_util.dumps(data)})
+ return JSONResponse(content={"status": "success", "docs": data})
@app.post("/sc/v0")
@@ -73,7 +70,7 @@ async def create(request: Request) -> JSONResponse:
key = await db.insert_one(json_data)
if key is None:
- return JSONResponse(content={"status": "error", "message": "DB error"}, status_code=400)
+ return JSONResponse(content={"status": "error", "message": "DB error"}, status_code=500)
return JSONResponse(content={"status": "success", "key": str(key)})
@@ -108,7 +105,7 @@ async def replace(request: Request) -> JSONResponse: # pylint: disable=too-many
document = await db.find_one(object_id)
if document is None:
- return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=400)
+ return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=404)
# Ensure valid schema
del json_data["_id"]
@@ -120,14 +117,14 @@ async def replace(request: Request) -> JSONResponse: # pylint: disable=too-many
returned_object_id = await db.replace_one(object_id, json_data)
if returned_object_id is None:
- return JSONResponse(content={"status": "error", "message": "DB error"}, status_code=400)
+ return JSONResponse(content={"status": "error", "message": "DB error"}, status_code=500)
return JSONResponse(content={"status": "success", "key": str(object_id)})
@app.get("/sc/v0/{key}")
async def get(key: str) -> JSONResponse:
- """/sc/v0, GET method
+ """/sc/v0/{key}, GET method
:param key: The document key in the database.
:return: JSONResponse
@@ -136,14 +133,14 @@ async def get(key: str) -> JSONResponse:
document = await db.find_one(ObjectId(key))
if document is None:
- return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=400)
+ return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=404)
- return JSONResponse(content={"status": "success", "docs": json_util.dumps(document)})
+ return JSONResponse(content={"status": "success", "doc": document})
@app.delete("/sc/v0/{key}")
async def delete(key: str) -> JSONResponse:
- """/sc/v0, DELETE method
+ """/sc/v0/{key}, DELETE method
:param key: The document key in the database.
:return: JSONResponse
@@ -151,7 +148,7 @@ async def delete(key: str) -> JSONResponse:
result = await db.delete_one(ObjectId(key))
if result is None:
- return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=400)
+ return JSONResponse(content={"status": "error", "message": "Document not found"}, status_code=404)
return JSONResponse(content={"status": "success", "key": str(key)})
@@ -166,6 +163,6 @@ async def info() -> JSONResponse:
count = await db.estimated_document_count()
if count is None:
- return JSONResponse(content={"status": "error", "message": "DB error"}, status_code=400)
+ return JSONResponse(content={"status": "error", "message": "DB error"}, status_code=500)
return JSONResponse(content={"status": "success", "Estimated document count": count})