Files
fastapi-best-architecture/backend/common/dataclasses.py
T
Toby WongandWu Clan 92f182cd09 Add plugin depends on and lifecycle ordering (#1153)
* feat: add priority support to LifespanManager.register

* feat: support lifespan stages and plugin dependencies

* Optimize implementations

* Fix dependency resolution

* Fix the depends on type

---------

Co-authored-by: Wu Clan <jianhengwu0407@gmail.com>
2026-04-17 16:54:48 +08:00

86 lines
1.5 KiB
Python

import dataclasses
from datetime import datetime
from typing import Any
from fastapi import Response
from backend.common.enums import StatusType
@dataclasses.dataclass
class IpInfo:
ip: str
country: str | None
region: str | None
city: str | None
@dataclasses.dataclass
class UserAgentInfo:
user_agent: str | None
os: str | None
browser: str | None
device: str | None
@dataclasses.dataclass
class RequestCallNext:
code: str
msg: str
status: StatusType
err: Exception | None
response: Response
@dataclasses.dataclass
class AccessToken:
access_token: str
access_token_expire_time: datetime
session_uuid: str
@dataclasses.dataclass
class RefreshToken:
refresh_token: str
refresh_token_expire_time: datetime
@dataclasses.dataclass
class NewToken:
new_access_token: str
new_access_token_expire_time: datetime
new_refresh_token: str
new_refresh_token_expire_time: datetime
session_uuid: str
@dataclasses.dataclass
class TokenPayload:
user_id: int
session_uuid: str
expire_time: datetime
@dataclasses.dataclass
class UploadUrl:
url: str
@dataclasses.dataclass
class SnowflakeInfo:
timestamp: int
datetime: str
datacenter_id: int
worker_id: int
sequence: int
@dataclasses.dataclass(slots=True)
class PluginEntry:
name: str
depends_on: list[str] | None = None
extend: str | None = None
routers: list[str] | None = None
api: dict[str, Any] | None = None