diff --git a/config.yaml.example b/config.yaml.example index 198b5ec..55f6a61 100644 --- a/config.yaml.example +++ b/config.yaml.example @@ -1,2 +1,3 @@ server_name: "valhalla" server_port: 8088 +logging_level: "INFO" diff --git a/utils/database/database.py b/utils/database/database.py index 6609391..8bf58de 100644 --- a/utils/database/database.py +++ b/utils/database/database.py @@ -1,27 +1,52 @@ from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from utils.models import Client, VMImage +import logging + + class Database: - def __init__(self, database_file: str): + def __init__(self, database_file: str, logging_level: str): try: # Connect to the database using SQLAlchemy engine = create_engine(f"sqlite:///{database_file}") Session = sessionmaker() Session.configure(bind=engine) self.session = Session() + # create logger using data from config file + self.logger = logging.getLogger(__name__) + log_level_mapping_dict = { + "NOTSET": 0, + "DEBUG": 10, + "INFO": 20, + "WARNING": 30, + "ERROR": 40, + "CRITICAL": 50 + } + self.logger.setLevel(log_level_mapping_dict[logging_level]) except Exception as ex: print(ex) exit(-1) - + def get_clients(self) -> list(Client): result = None try: - result = self.session.query(Client).all() + with self.session.begin(): + result = self.session.query(Client).all() except Exception as ex: - print(f"Error getting list of clients from database: {ex}") + self.logger.error( + f"Error getting list of clients from database: {ex}") result = None return result - - def get_client_by_mac_address(mac_address: str) -> Client: + + def get_client_by_mac_address(self, mac_address: str) -> Client: + result = None + try: + with self.session.begin(): + result = self.session.query( + Client, mac_address=mac_address).first() + except Exception as ex: + self.logger.error(f"Error getting client by mac address: {ex}") + return result + + def get_clients_by_client_version(self, client_version: str) -> list(Client): result = None - \ No newline at end of file