20 lines
554 B
Python
20 lines
554 B
Python
from typing import Optional
|
|
|
|
from beanie import PydanticObjectId
|
|
from fastapi import HTTPException
|
|
|
|
|
|
def parse_object_id(value: str) -> PydanticObjectId:
|
|
"""Parse a string to PydanticObjectId, raising 400 on invalid format."""
|
|
try:
|
|
return PydanticObjectId(value)
|
|
except Exception:
|
|
raise HTTPException(status_code=400, detail="无效的ID格式")
|
|
|
|
|
|
def mask_name(name: Optional[str]) -> str:
|
|
"""隐私脱敏:姓名"""
|
|
if not name or len(name) < 2:
|
|
return name or ""
|
|
return name[0] + "*" * (len(name) - 1)
|