# lootDB

from models.loots.loot import Loot
from models.heroes.monster import Monster
from models.heroes.hero import Hero

# pour éviter les pb d'import circulaire
from typing import TYPE_CHECKING


if TYPE_CHECKING:
    from database.mainDB import MainDB


class LootDB:

    def __init__(self, db: "MainDB") -> None:
        self.db = db

    def get_loots_by_hero_and_loot_type(self, hero: Hero, loot_type: int) -> list:
        query = """ 
            SELECT l.* 
            FROM loots l
            INNER JOIN characters_has_loots chl ON l.id = chl.loot_type
            WHERE chl.character_type = ? AND l.types_id = ?;
        """
        values = (hero.type, loot_type)

        self.db.sql_query(query, values)
        results = self.db.cursor.fetchall()

        loots = []
        for result in results:
            loots.append(self.define_loot(result))

        return loots

    def define_loot(self, result: list) -> dict:
        id = result[0]
        title = result[1]
        type = result[2]
        loot_value = result[3]
        value = result[4]
        description = result[5]
        drop_rate = result[6]

        loot = Loot(title, description, type, loot_value, value, drop_rate)
        loot.id = id

        return loot
