38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
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
|
|
|
|
# SQLite database settings
|
|
SQLITE_DATABASE_PATH: str = "fitness.db"
|
|
|
|
# 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()
|