from pathlib import Path import os from dotenv import load_dotenv BASE_DIR = Path(__file__).resolve().parent.parent PROJECT_ROOT = BASE_DIR.parent ENV_FILE = BASE_DIR / ".env" ROOT_ENV_FILE = PROJECT_ROOT / ".env" load_dotenv(ROOT_ENV_FILE) load_dotenv(ENV_FILE, override=True) class Settings: def __init__(self) -> None: self.app_name = os.getenv("APP_NAME", "Clinica Veterinaria Formiginese API") self.app_env = os.getenv("APP_ENV", "development") self.app_host = os.getenv("APP_HOST", "127.0.0.1") self.app_port = int(os.getenv("APP_PORT", "8000")) default_sqlite_path = (PROJECT_ROOT / "data" / "clinica.db").resolve() self.database_url = os.getenv("DATABASE_URL", f"sqlite:///{default_sqlite_path.as_posix()}") self.smtp_host = os.getenv("SMTP_HOST", "smtp.gmail.com") self.smtp_port = int(os.getenv("SMTP_PORT", "587")) self.smtp_username = os.getenv("SMTP_USERNAME", "") self.smtp_password = os.getenv("SMTP_PASSWORD", "") self.smtp_use_tls = os.getenv("SMTP_USE_TLS", "true").lower() in {"1", "true", "yes", "on"} self.booking_email_from = os.getenv("BOOKING_EMAIL_FROM", self.smtp_username) self.booking_email_to = os.getenv("BOOKING_EMAIL_TO", "") self.booking_email_subject_prefix = os.getenv( "BOOKING_EMAIL_SUBJECT_PREFIX", "[Clinica Veterinaria Formiginese]", ) @property def sqlite_file_path(self) -> str | None: sqlite_prefix = "sqlite:///" if self.database_url.startswith(sqlite_prefix): return self.database_url.removeprefix(sqlite_prefix) return None @property def booking_mail_enabled(self) -> bool: return all( [ self.smtp_host, self.smtp_port, self.smtp_username, self.smtp_password, self.booking_email_from, self.booking_email_to, ] ) settings = Settings()