import os from pathlib import Path from typing import Optional from pydantic_settings import BaseSettings class Settings(BaseSettings): # API Information PROJECT_NAME: str = "Task Manager API" DESCRIPTION: str = "A FastAPI-based task management system" VERSION: str = "0.1.0" API_V1_STR: str = "/api/v1" # Authentication settings SECRET_KEY: str = os.environ.get( "SECRET_KEY", "your-super-secret-key-for-development-only" ) ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 # Database settings DB_DIR: Path = Path("/app") / "storage" / "db" SQLALCHEMY_DATABASE_URL: Optional[str] = None class Config: env_file = ".env" env_file_encoding = "utf-8" case_sensitive = True settings = Settings() # Ensure database directory exists settings.DB_DIR.mkdir(parents=True, exist_ok=True) # Set database URL after ensuring directory exists if settings.SQLALCHEMY_DATABASE_URL is None: settings.SQLALCHEMY_DATABASE_URL = f"sqlite:///{settings.DB_DIR}/db.sqlite"