Files
g0v0-server/app/config.py
2025-08-10 05:38:28 +00:00

51 lines
1.4 KiB
Python

from __future__ import annotations
from typing import Annotated, Any
from pydantic import Field, field_validator
from pydantic_settings import BaseSettings, NoDecode, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")
# 数据库设置
database_url: str = "mysql+aiomysql://root:password@127.0.0.1:3306/osu_api"
redis_url: str = "redis://127.0.0.1:6379/0"
# JWT 设置
secret_key: str = Field(default="your-secret-key-here", alias="jwt_secret_key")
algorithm: str = "HS256"
access_token_expire_minutes: int = 1440
# OAuth 设置
osu_client_id: str = "5"
osu_client_secret: str = "FGc9GAtyHzeQDshWP5Ah7dega8hJACAJpQtw6OXk"
# 服务器设置
host: str = "0.0.0.0"
port: int = 8000
debug: bool = False
# SignalR 设置
signalr_negotiate_timeout: int = 30
signalr_ping_interval: int = 15
# Fetcher 设置
fetcher_client_id: str = ""
fetcher_client_secret: str = ""
fetcher_scopes: Annotated[list[str], NoDecode] = ["public"]
fetcher_callback_url: str = "http://localhost:8000/fetcher/callback"
# 日志设置
log_level: str = "INFO"
@field_validator("fetcher_scopes", mode="before")
def validate_fetcher_scopes(cls, v: Any) -> list[str]:
if isinstance(v, str):
return v.split(",")
return v
settings = Settings()