summaryrefslogtreecommitdiff
path: root/src/soc_collector/db.py
diff options
context:
space:
mode:
authorVictor Näslund <victor@sunet.se>2022-11-16 20:05:18 +0100
committerVictor Näslund <victor@sunet.se>2022-11-16 20:05:18 +0100
commit210467cc289e31fabef9e8eef78a07d5818d7513 (patch)
treedf4538a7bf334426ed0e38fd8e64fa137fcfbc37 /src/soc_collector/db.py
parent49cd9e90ae5f9a374ccd73f4a064d89729cdfb5e (diff)
better object id handling
Diffstat (limited to 'src/soc_collector/db.py')
-rw-r--r--src/soc_collector/db.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/soc_collector/db.py b/src/soc_collector/db.py
index f537f4a..b10d865 100644
--- a/src/soc_collector/db.py
+++ b/src/soc_collector/db.py
@@ -6,6 +6,8 @@ from dataclasses import dataclass
from fastapi import HTTPException
from pydantic import BaseModel
+from bson import ObjectId
+from bson.errors import InvalidId
from pymongo.errors import OperationFailure
from pymongo import (
ASCENDING,
@@ -15,7 +17,19 @@ from motor.motor_asyncio import (
AsyncIOMotorClient,
AsyncIOMotorCollection,
)
-from bson import ObjectId
+
+
+def object_id_from_key(key: str) -> ObjectId:
+ """Get ObjectId from key, 400 if invalid ObjectId
+
+ :param key: Key.
+ :return: ObjectId
+ """
+
+ try:
+ return ObjectId(key)
+ except InvalidId as exc:
+ raise HTTPException(status_code=400, detail="Invalid key/object id") from exc
class SearchInput(BaseModel):