Source code for q2_sdk.hq.models.db_config.db_env_config

from dataclasses import dataclass
from typing import Generic, TypeVar
from q2_sdk.hq.models.db_config.db_dynamic_config import DbDynamicConfig

T = TypeVar("T")


@dataclass
class EnvValue(Generic[T]):
    prod: T
    stg: T
    dev: T

    def resolve(self) -> T:
        from q2_sdk.core.configuration import settings

        match settings.DEPLOY_ENV:  # noqa: E999
            case "PROD":
                return self.prod
            case "STG":
                return self.stg
            case _:
                return self.dev


[docs] class DbEnvConfig(DbDynamicConfig[T]): """ Variant of DbConfig that dynamically updates the default value based on the environment currently deployed to (i.e. dev, production, or staging). """ def __init__(self, name, default: EnvValue[T], description=None, required=True): """ :param name: Key written to the database :param default: An instance of EnvValue with default values for PROD, STG, and DEV :param required: If True, will raise errors at runtime when unset. Consider using False when DbConfigs are added to an already deployed extension """ super().__init__(name, default.resolve, description, required)