#!/usr/bin/env python3
"""
   utils.database.app_database.py file for the c3 printing system.
"""

import sys
import logging

### LOCAL
try:
    from utils.configuration.app_logger import set_logger_from_config
except ImportError as e:
    print("Unable to import 'setup_logger' from 'utils.configuration.app_logger.py' file at 'utils.database.app_database.py' file")
    sys.exit(1)

try:
    from .from_local_file import DataBaseLocalSqLite
except ImportError as e:
    print("Unable to import 'DataBaseUsed' from 'utils.database.from_local_file.py' file at 'utils.database.app_database.py' file")
    sys.exit(1)

try:
    from .from_api import DataBaseApi
except ImportError as e:
    print("Unable to import 'DataBaseApi' from 'utils.database.from_api.py' file at 'utils.database.app_database.py' file")
    sys.exit(1)


class AppDatabase():
    """
        Class for setting the configuration of the app.
    """

    def __init__(self, configuration) -> None:
        """
            Function for initialiazing the AppConfiguration class.
            Sets the class variables.

            Returns
            -------
            None
        """

        self.configuration = configuration

        self.logger = set_logger_from_config(name=__name__, config=self.configuration)

        self.set_database()

    def set_database(self) -> None:

        self.logger.debug("set_database")

        if self.configuration.database_type == "local_file":
            self.logger.info("---> Using local SQLite3 file as Database")
            self.db = DataBaseLocalSqLite(configuration=self.configuration)

        elif self.configuration.database_type == "api":
            self.logger.info("---> Using API calls as Database")
            self.db = DataBaseApi(configuration=self.configuration)

        else:
            print(f"\n\n ERROR! ---> Unable to set database from the parsed 'database_type' with value: {self.configuration.database_type}")
            sys.exit(1)