114 lines
2.7 KiB
Python
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
|