File size: 737 Bytes
67aa1ca | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | """Utilidades para trabajar con ``ObjectId`` de MongoDB."""
from __future__ import annotations
from bson import ObjectId
from bson.errors import InvalidId
from app.exceptions import InvalidIdError
def to_object_id(value: str | ObjectId) -> ObjectId:
"""Convierte un valor a :class:`bson.ObjectId`.
Args:
value: Identificador como cadena o ``ObjectId``.
Returns:
El ``ObjectId`` correspondiente.
Raises:
InvalidIdError: Si el valor no es un ObjectId válido.
"""
if isinstance(value, ObjectId):
return value
try:
return ObjectId(value)
except (InvalidId, TypeError) as exc:
raise InvalidIdError(f"'{value}' no es un identificador válido.") from exc
|