Files
live-campus-mcs-p-2027.2/Semaine_07/Jour_04/bank/entities/banks.py
gauvainboiche 606e43e53f Semaine 7
2026-03-20 21:26:23 +01:00

37 lines
1.2 KiB
Python

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)