import mysql.connector
from config import Config

class Database:
    def __init__(self):
        self.conn = None
        self.connect()

    def connect(self):
        try:
            self.conn = mysql.connector.connect(
                host=Config.DB_HOST,
                user=Config.DB_USER,
                password=Config.DB_PASS,
                database=Config.DB_NAME,
                autocommit=True
            )
        except Exception as e:
            print(f"Error connecting to database: {e}")

    def get_cursor(self):
        if not self.conn or not self.conn.is_connected():
            self.connect()
        return self.conn.cursor(dictionary=True)

    def set_api_key(self, user_id, api_key):
        cursor = self.get_cursor()
        try:
            sql = "INSERT INTO users (user_id, api_key) VALUES (%s, %s) ON DUPLICATE KEY UPDATE api_key = %s"
            cursor.execute(sql, (user_id, api_key, api_key))
            return True
        except Exception as e:
            print(f"DB Error: {e}")
            return False
        finally:
            cursor.close()

    def get_api_key(self, user_id):
        cursor = self.get_cursor()
        try:
            sql = "SELECT api_key FROM users WHERE user_id = %s"
            cursor.execute(sql, (user_id,))
            result = cursor.fetchone()
            return result['api_key'] if result else None
        except Exception as e:
            print(f"DB Error: {e}")
            return None
        finally:
            cursor.close()

    def delete_api_key(self, user_id):
        cursor = self.get_cursor()
        try:
            sql = "DELETE FROM users WHERE user_id = %s"
            cursor.execute(sql, (user_id,))
            return True
        except Exception as e:
            print(f"DB Error: {e}")
            return False
        finally:
            cursor.close()

db = Database()