# This Python file uses the following encoding: utf-8
import mariadb

class DbManager(object):
    __connection = None
    __con_param = None
    __dbmanager = None

    def __new__(cls, dbconf = None):

        if cls.__dbmanager is None:
            cls.__dbmanager = super(DbManager, cls).__new__(cls)
            cls.__dbmanager.__initializeConfig(dbconf)

        return cls.__dbmanager


    def getConnection(cls):
            try:
                if not cls.__connection  or not cls.__connection.ping():
                    cls.__connection = mariadb.connect(**cls.__con_param)
            except mariadb.InterfaceError as e:
                cls.__connection = mariadb.connect(**cls.__con_param)
                print(f"DbManager Connection (INTERFACE ERROR): {e}..reconnecting...")
            except mariadb.Error as e:
                print(f"Connection parameters are wrong: {e}")
                cls.__connection = None

            return cls.__connection

    def __initializeConfig(cls, dbconf):
        cls.__con_param = { 'user': dbconf['DB_USER'], 'password': dbconf['DB_PASS'],
                      'port': int (dbconf['DB_PORT']), 'host': dbconf['DB_HOST'],
                      'database': dbconf['DB_NAME']
                    }





