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" @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()