from peewee import MySQLDatabase, PostgresqlDatabase
from mgrctl.settings.db import (
    DB_ENGINE,
    DB_HOST,
    DB_PORT,
    DB_USER,
    DB_PASSWORD
)


def guess_database(db_name):
    """
    function checks DB_ENGINE and set correct connection class
    with connection params. Expected database name in input.

    Args:
        db_name (_str_): database name

    Returns:
        (_MySQLDatabase_or_PostgresqlDatabase_ class):
        contains db connection params
    """
    if DB_ENGINE == 'mysql':
        return MySQLDatabase(
            db_name, **{
                'charset': 'utf8',
                'sql_mode': 'PIPES_AS_CONCAT',
                'use_unicode': True,
                'host': DB_HOST,
                'port': DB_PORT,
                'user': DB_USER,
                'password': DB_PASSWORD
            }
        )
    if DB_ENGINE == 'psql':
        return PostgresqlDatabase(
            db_name, **{
                'charset': 'utf8',
                'sql_mode': 'PIPES_AS_CONCAT',
                'use_unicode': True,
                'host': DB_HOST,
                'port': DB_PORT,
                'user': DB_USER,
                'password': DB_PASSWORD
            }
        )