Source code for app.core.config

"""
Application configuration using Pydantic Settings
"""

from typing import List, Optional
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import AnyHttpUrl, field_validator


[docs] class Settings(BaseSettings): # API Settings API_V1_STR: str = "/api/v1" PROJECT_NAME: str = "Tafy Studio Hub" VERSION: str = "0.0.1" # CORS Settings BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = ["http://localhost:3000"]
[docs] @field_validator("BACKEND_CORS_ORIGINS", mode="before") @classmethod def assemble_cors_origins(cls, v: str | List[str]) -> List[str] | str: if isinstance(v, str) and not v.startswith("["): return [i.strip() for i in v.split(",")] elif isinstance(v, (list, str)): return v raise ValueError(v)
# NATS Settings NATS_URL: str = "nats://localhost:4222" NATS_USER: Optional[str] = None NATS_PASSWORD: Optional[str] = None # Database Settings (optional, can use NATS KV instead) DATABASE_URL: Optional[str] = None # Redis Settings (optional) REDIS_URL: Optional[str] = None # Security Settings SECRET_KEY: str = "your-secret-key-change-in-production" ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 # Logging LOG_LEVEL: str = "INFO" LOG_FORMAT: str = "json" # json or console model_config = SettingsConfigDict( env_file=".env", env_file_encoding="utf-8", case_sensitive=True, )
settings = Settings()