fastcheck/fastcheck_api/app/utils/mongo.py
2026-04-29 11:18:51 -04:00

32 lines
818 B
Python

from __future__ import annotations
import re
from collections.abc import Mapping, Sequence
from datetime import datetime
from typing import Any
from bson import ObjectId
def to_object_id(value: str) -> ObjectId:
return ObjectId(value)
def jsonable(value: Any) -> Any:
if isinstance(value, ObjectId):
return str(value)
if isinstance(value, datetime):
return value
if isinstance(value, Mapping):
return {k: jsonable(v) for k, v in value.items()}
if isinstance(value, Sequence) and not isinstance(value, (str, bytes, bytearray)):
return [jsonable(v) for v in value]
return value
def sanitize_rut(value: str) -> str:
digits = "".join(re.findall(r"\d", value or ""))
if len(digits) <= 1:
return digits
return f"{digits[:-1]}-{digits[-1]}"