Files
getDomain/domain-api/app/core/config.py
Your Name ebf632e651 first
2026-04-16 21:35:47 +08:00

63 lines
1.9 KiB
Python

from pathlib import Path
from pydantic import field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
BASE_DIR = Path(__file__).resolve().parents[2]
WORKSPACE_DIR = BASE_DIR.parent
DOMAINCHECK_DIR = WORKSPACE_DIR / "domainCheck"
API_ENV_FILE = BASE_DIR / ".env"
ENV_FILE = DOMAINCHECK_DIR / ".env"
class Settings(BaseSettings):
api_prefix: str = "/api/v1"
api_host: str = "0.0.0.0"
api_port: int = 8100
cors_origins: list[str] = ["http://127.0.0.1:3200", "http://localhost:3200"]
db_host: str = "127.0.0.1"
db_port: int = 5432
db_database: str = "domain"
db_user: str = "postgres"
db_password: str = "postgres"
redis_host: str = "127.0.0.1"
redis_port: int = 6379
redis_password: str = ""
redis_db: int = 0
domain_root: str = str(DOMAINCHECK_DIR)
admin_username: str = "admin"
admin_password: str = "admin"
worker_mode: str = "windows-local"
worker_service_name: str = "domaincheck-worker"
api_service_name: str = "domaincheck-api"
sync_agent_service_name: str = "domaincheck-sync-agent"
node_code: str = "overseas-control-01"
node_region: str = "overseas"
node_role: str = "control"
sync_push_enabled: bool = False
sync_source_region: str = "unknown"
sync_target_region: str = "overseas"
sync_target_api_base_url: str = ""
sync_shared_token: str = ""
sync_batch_size: int = 200
sync_poll_interval_seconds: int = 30
@field_validator("cors_origins", mode="before")
@classmethod
def parse_cors_origins(cls, value: object) -> object:
if isinstance(value, str):
if value.strip().startswith("["):
return value
return [item.strip() for item in value.split(",") if item.strip()]
return value
model_config = SettingsConfigDict(
env_file=(str(API_ENV_FILE), str(ENV_FILE)),
env_file_encoding="utf-8",
extra="ignore",
)
settings = Settings()