from clients import Client, ClientNotFound from credit_cards import CreditCard from sqlalchemy import Column, Integer, String from sqlalchemy.orm import relationship from database import Base, engine class Bank(Base): __tablename__ = "banks" id = Column(Integer, primary_key= True, autoincrement= True) name = Column(String(200), nullable= False) clients = relationship("Client", back_populate= "bank", uselist= True) # type: ignore # Le uselist définit le One ou le Many d'une relation inter-tables # Cela permet aussi de définir la dépendance d'une table à l'autre def __init__(self, name: str) -> None: self.name = name self.clients: list["Client"] = [] # Tout attribut faisant référence à une autre classe # est une RELATION, pas une COLONNE def __repr__(self) -> str: return f"\ [Banque] : {self.name}" def add_client(self, client: "Client"): self.clients.append(client) def request_credit_card(self, client: "Client"): if client not in self.clients: raise ClientNotFound() return CreditCard(account = client.account) Base.metadata.create_all(engine)