path-of-the-loner/database/databases/heroDB.py
2025-03-03 16:47:07 +01:00

114 lines
2.7 KiB
Python

# heroDB
from models.heroes.hero import Hero
from models.heroes.archery import Archery
from models.heroes.warrior import Warrior
from models.heroes.wizard import Wizard
# pour éviter les pb d'import circulaire
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from database.mainDB import MainDB
class HeroDB:
def __init__(self, db: "MainDB") -> None:
self.db = db
def get_all_heroes(self) -> list[Hero]:
query = "SELECT * FROM heroes WHERE ?"
values = (1,)
self.db.sql_query(query, values)
results = self.db.cursor.fetchall()
heroes = []
for result in results:
heroes.append(self.define_hero(result))
return heroes
def get_archers(self) -> list[Hero]:
query = "SELECT * FROM heroes WHERE types_id = ?"
values = (Hero.ARCHERY,)
self.db.sql_query(query, values)
results = self.db.cursor.fetchall()
list_return = []
for result in results:
list_return.append(self.define_hero(result))
return list_return
def get_warriors(self) -> list[Hero]:
query = "SELECT * FROM heroes WHERE types_id = ?"
values = (Hero.WARRIOR,)
self.db.sql_query(query, values)
results = self.db.cursor.fetchall()
list_return = []
for result in results:
list_return.append(self.define_hero(result))
return list_return
def get_wizards(self) -> list[Hero]:
query = "SELECT * FROM heroes WHERE types_id = ?"
values = (Hero.WIZARD,)
self.db.sql_query(query, values)
results = self.db.cursor.fetchall()
list_return = []
for result in results:
list_return.append(self.define_hero(result))
return list_return
def define_hero(self, result: list) -> Hero:
id = result[0]
title = result[1]
types_id = result[2]
health_points = result[3]
attack_power = result[4]
defense = result[5]
mana = result[6]
description = result[7]
if types_id == Hero.ARCHERY:
hero = Archery(
title,
description,
health_points,
attack_power,
defense,
)
elif types_id == Hero.WARRIOR:
hero = Warrior(
title,
description,
health_points,
attack_power,
defense,
)
elif types_id == Hero.WIZARD:
hero = Wizard(
title,
description,
health_points,
attack_power,
defense,
mana,
)
hero.id = id
return hero