from pydantic_settings import BaseSettings, SettingsConfigDict from typing import Optional class Settings(BaseSettings): # Base app settings model_config = SettingsConfigDict(env_file=".env") app_name: str = "F1tness Parser API" version: str = "0.0.1" debug: bool = False # Postgres database settings POSTGRES_DATABASE_URL: Optional[str] = None POSTGRES_DATABASE_HOST: str = "localhost" POSTGRES_DATABASE_PORT: int = 5432 POSTGRES_DATABASE_DB: str = "f1tness_db" POSTGRES_DATABASE_USER: str = "postgres" POSTGRES_DATABASE_PASSWORD: str = "password" def get_postgres_database_url(self, async_driver: bool = True) -> str: """Method for receiving relational database URL""" # If POSTGRES_DATABASE_URL is somehow set in env file - return it if self.POSTGRES_DATABASE_URL: return self.POSTGRES_DATABASE_URL driver = "postgresql+asyncpg" if async_driver else "postgresql" return ( f"{driver}://{self.POSTGRES_DATABASE_USER}:{self.POSTGRES_DATABASE_PASSWORD}" f"@{self.POSTGRES_DATABASE_HOST}" f":{self.POSTGRES_DATABASE_PORT}/{self.POSTGRES_DATABASE_DB}" ) settings = Settings()