48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from persistencia.persistente import Persistente
|
|
from modelo.pessoa import Pessoa
|
|
from modelo.pet import Pet
|
|
from modelo.adocao import Adocao
|
|
|
|
class BancoDeDados:
|
|
def __init__(self):
|
|
self.pessoas = Persistente()
|
|
self.pets = Persistente()
|
|
self.adocoes = Persistente()
|
|
|
|
def obter_proximo_id_pessoa(self):
|
|
ids_pessoas = [p.id for p in self.pessoas.listar_todos()]
|
|
return max(ids_pessoas) + 1 if ids_pessoas else 1
|
|
|
|
def obter_proximo_id_pet(self):
|
|
ids_pets = [p.id for p in self.pets.listar_todos()]
|
|
return max(ids_pets) + 1 if ids_pets else 1
|
|
|
|
def obter_proximo_id_adocao(self):
|
|
ids_adocoes = [a.id for a in self.adocoes.listar_todos()]
|
|
return max(ids_adocoes) + 1 if ids_adocoes else 1
|
|
|
|
def remover_pessoa(self, id_pessoa: int):
|
|
adocoes_para_remover = [
|
|
adocao for adocao in self.adocoes.listar_todos()
|
|
if adocao.adotante.id == id_pessoa
|
|
]
|
|
for adocao in adocoes_para_remover:
|
|
self.adocoes.remover(adocao.id)
|
|
|
|
self.pessoas.remover(id_pessoa)
|
|
|
|
def remover_pet(self, id_pet: int):
|
|
adocoes_para_remover = []
|
|
for adocao in self.adocoes.listar_todos():
|
|
itens_para_manter = [item for item in adocao.itens if item.pet.id != id_pet]
|
|
|
|
if len(itens_para_manter) < len(adocao.itens):
|
|
adocao.itens = itens_para_manter
|
|
if not adocao.itens:
|
|
adocoes_para_remover.append(adocao.id)
|
|
|
|
for adocao_id in adocoes_para_remover:
|
|
self.adocoes.remover(adocao_id)
|
|
|
|
self.pets.remover(id_pet)
|