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