pets/persistencia/banco_dados.py

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)