import mysql.connector
import pymysql

from config import DATABASES

pymysql.install_as_MySQLdb()


class MiddlewareDatabase:

    def __enter__(self):
        self._connection = mysql.connector.connect(host=DATABASES["default"]["HOST"],
                                                   database=DATABASES["default"]["NAME"],
                                                   user=DATABASES["default"]["USER"],
                                                   password=DATABASES["default"]["PASSWORD"])
        self._cursor = self._connection.cursor()
        return self._cursor

    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type is not None:
            self._connection.rollback()
        else:
            self._connection.commit()
        self._cursor.close()
        self._connection.close()


def validate_basic_auth(key, secret, ip):
    with MiddlewareDatabase() as db:
        db.execute("select * from vendor_api_credentials where `key` = %s and secret = %s", (key, secret))
        result = db.fetchall()
        ip_list = result[0][4]
    if result:  # and ip in ip_list
        return True
    return False


def get_jwt_key(vendor_id):
    with MiddlewareDatabase() as db:
        db.execute("select `key` from vendor_api_credentials where vendor_id = %s", (vendor_id,))
        result = db.fetchall()
    if result:
        return result[0][0]


