#
#   Copyright © 2021,2022 IsardVDI S.L.
#   Copyright © 2022 Evilham <contact@evilham.com>
#
#   This file is part of DD
#
#   DD is free software: you can redistribute it and/or modify
#   it under the terms of the GNU Affero General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or (at your
#   option) any later version.
#
#   DD is distributed in the hope that it will be useful, but WITHOUT ANY
#   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
#   FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
#   details.
#
#   You should have received a copy of the GNU Affero General Public License
#   along with DD. If not, see <https://www.gnu.org/licenses/>.
#
# SPDX-License-Identifier: AGPL-3.0-or-later

import mysql.connector
import mysql.connector.cursor

from typing import List, Tuple


class Mysql:
    # TODO: Fix this whole class
    cur : mysql.connector.cursor.MySQLCursor
    conn : mysql.connector.MySQLConnection
    def __init__(self, host : str, database : str, user : str, password : str) -> None:
        self.conn = mysql.connector.connect(
            host=host, database=database, user=user, password=password
        )

    def select(self, sql : str) -> List[Tuple]:
        self.cur = self.conn.cursor()
        self.cur.execute(sql)
        data : List[Tuple] = self.cur.fetchall()
        self.cur.close()
        return data

    def update(self, sql : str) -> None:
        # TODO: Fix this whole method
        self.cur = self.conn.cursor()
        self.cur.execute(sql)
        self.conn.commit()
        self.cur.close()
