| 12345678910111213141516171819202122232425262728293031323334353637 |
- from __future__ import annotations
- from dataclasses import dataclass
- from typing import Annotated
- from fastapi import Depends, Header, Query
- from sqlalchemy.orm import Session
- from app.db.session import get_db
- DbSession = Annotated[Session, Depends(get_db)]
- PageNumber = Annotated[int, Query(ge=1, description="页码")]
- PageSize = Annotated[int, Query(ge=1, le=200, description="每页数量")]
- @dataclass(frozen=True)
- class ActorContext:
- user_name: str
- roles: tuple[str, ...]
- mine_id: str | None = None
- def get_actor_context(
- x_user_name: str = Header(default="default"),
- x_user_roles: str = Header(default="viewer"),
- x_mine_id: str | None = Header(default=None),
- ) -> ActorContext:
- return ActorContext(
- user_name=x_user_name,
- roles=tuple(role.strip() for role in x_user_roles.split(",") if role.strip()),
- mine_id=x_mine_id,
- )
- Actor = Annotated[ActorContext, Depends(get_actor_context)]
|