37 lines
1.2 KiB
Python
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) |