Skip to content

Database Config

database_config

Database Configuration - Path Management.

Provides configuration management for database file paths and connection settings for all four databases.

Classes:

Name Description
DatabaseConfig

Database configuration manager for file paths and settings

Classes

DatabaseConfig

DatabaseConfig(config_file: Optional[Path] = None)

Database configuration manager.

Manages paths and settings for all four databases: BioRemPP, KEGG, HADEG, and ToxCSM.

Attributes:

Name Type Description
config_file Path

Path to database config YAML file

_config Dict[str, Dict[str, str]]

Loaded database configurations

Methods:

Name Description
get_database_path

Get database file path

get_database_encoding

Get database file encoding

get_database_separator

Get database CSV separator

get_all_database_paths

Get all database paths

validate_paths

Validate that all database files exist

get_database_info

Get complete database configuration

get_available_databases

Get list of available database names

Initialize database configuration.

Parameters:

Name Type Description Default
config_file Optional[Path]

Path to database config YAML file. Defaults to 'config/databases.yaml'.

None
Source code in src/infrastructure/config/database_config.py
def __init__(self, config_file: Optional[Path] = None):
    """
    Initialize database configuration.

    Parameters
    ----------
    config_file : Optional[Path], default=None
        Path to database config YAML file.
        Defaults to 'config/databases.yaml'.
    """
    if config_file is None:
        config_file = Path("config/databases.yaml")

    self.config_file = config_file
    self._config: Dict[str, Dict[str, str]] = {}
    self._load_config()
Functions
get_database_path
get_database_path(database_name: str) -> Path

Get database file path.

Parameters:

Name Type Description Default
database_name str

Database name ('biorempp', 'kegg', 'hadeg', 'toxcsm')

required

Returns:

Type Description
Path

Path to database file

Raises:

Type Description
ValueError

If database name is unknown

Source code in src/infrastructure/config/database_config.py
def get_database_path(self, database_name: str) -> Path:
    """
    Get database file path.

    Parameters
    ----------
    database_name : str
        Database name ('biorempp', 'kegg', 'hadeg', 'toxcsm')

    Returns
    -------
    Path
        Path to database file

    Raises
    ------
    ValueError
        If database name is unknown
    """
    if database_name not in self._config:
        available = list(self._config.keys())
        raise ValueError(
            f"Unknown database: '{database_name}'. " f"Available: {available}"
        )

    filepath = self._config[database_name]["filepath"]
    return Path(filepath)
get_database_encoding
get_database_encoding(database_name: str, default: str = 'utf-8') -> str

Get database file encoding.

Parameters:

Name Type Description Default
database_name str

Database name.

required
default str

Default encoding if not specified.

'utf-8'

Returns:

Type Description
str

File encoding.

Source code in src/infrastructure/config/database_config.py
def get_database_encoding(self, database_name: str, default: str = "utf-8") -> str:
    """
    Get database file encoding.

    Parameters
    ----------
    database_name : str
        Database name.
    default : str, default='utf-8'
        Default encoding if not specified.

    Returns
    -------
    str
        File encoding.
    """
    if database_name not in self._config:
        return default

    return self._config[database_name].get("encoding", default)
get_database_separator
get_database_separator(database_name: str, default: str = ';') -> str

Get database CSV separator.

Parameters:

Name Type Description Default
database_name str

Database name.

required
default str

Default separator if not specified.

';'

Returns:

Type Description
str

CSV separator.

Source code in src/infrastructure/config/database_config.py
def get_database_separator(self, database_name: str, default: str = ";") -> str:
    """
    Get database CSV separator.

    Parameters
    ----------
    database_name : str
        Database name.
    default : str, default=';'
        Default separator if not specified.

    Returns
    -------
    str
        CSV separator.
    """
    if database_name not in self._config:
        return default

    return self._config[database_name].get("separator", default)
get_all_database_paths
get_all_database_paths() -> Dict[str, Path]

Get all database paths.

Returns:

Type Description
Dict[str, Path]

Dictionary mapping database names to paths

Source code in src/infrastructure/config/database_config.py
def get_all_database_paths(self) -> Dict[str, Path]:
    """
    Get all database paths.

    Returns
    -------
    Dict[str, Path]
        Dictionary mapping database names to paths
    """
    return {name: Path(cfg["filepath"]) for name, cfg in self._config.items()}
validate_paths
validate_paths() -> Dict[str, bool]

Validate that all database files exist.

Returns:

Type Description
Dict[str, bool]

Dictionary mapping database names to existence status

Source code in src/infrastructure/config/database_config.py
def validate_paths(self) -> Dict[str, bool]:
    """
    Validate that all database files exist.

    Returns
    -------
    Dict[str, bool]
        Dictionary mapping database names to existence status
    """
    status = {}

    for name, path in self.get_all_database_paths().items():
        exists = path.exists()
        status[name] = exists

        if not exists:
            logger.warning(f"Database file not found: {name} ({path})")

    return status
get_database_info
get_database_info(database_name: str) -> Dict[str, str]

Get complete database configuration.

Parameters:

Name Type Description Default
database_name str

Database name.

required

Returns:

Type Description
Dict[str, str]

Database configuration dictionary.

Raises:

Type Description
ValueError

If database name is unknown.

Source code in src/infrastructure/config/database_config.py
def get_database_info(self, database_name: str) -> Dict[str, str]:
    """
    Get complete database configuration.

    Parameters
    ----------
    database_name : str
        Database name.

    Returns
    -------
    Dict[str, str]
        Database configuration dictionary.

    Raises
    ------
    ValueError
        If database name is unknown.
    """
    if database_name not in self._config:
        available = list(self._config.keys())
        raise ValueError(
            f"Unknown database: '{database_name}'. " f"Available: {available}"
        )

    return self._config[database_name].copy()
get_available_databases
get_available_databases() -> list[str]

Get list of available database names.

Returns:

Type Description
list[str]

List of database names.

Source code in src/infrastructure/config/database_config.py
def get_available_databases(self) -> list[str]:
    """
    Get list of available database names.

    Returns
    -------
    list[str]
        List of database names.
    """
    return list(self._config.keys())

Functions