"""Application configuration loaded from environment variables."""
from __future__ import annotations

import os


class Config:
    """Base configuration. Reads from env vars; fails loud on missing secrets."""

    SQLALCHEMY_TRACK_MODIFICATIONS = False
    JWT_ALGORITHM = "HS256"
    JWT_EXP_MINUTES = 60
    MIN_PASSWORD_LENGTH = 8

    def __init__(self) -> None:
        db_path = os.environ.get("MIMIC_DB_PATH", "/data/mimic.sqlite")
        self.SQLALCHEMY_DATABASE_URI = f"sqlite:///{db_path}"

        jwt_secret = os.environ.get("MIMIC_JWT_SECRET")
        if not jwt_secret:
            raise RuntimeError(
                "MIMIC_JWT_SECRET environment variable is required but not set."
            )
        self.JWT_SECRET = jwt_secret


class TestConfig(Config):
    """Config for pytest. Uses in-memory SQLite + fixed JWT secret."""

    TESTING = True

    def __init__(self) -> None:
        # Bypass parent's env requirement; tests inject their own secret.
        self.SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"
        self.JWT_SECRET = "test-secret-do-not-use-in-prod"
