Semaine 7
This commit is contained in:
37
Semaine_07/Jour_04/bank/entities/banks.py
Normal file
37
Semaine_07/Jour_04/bank/entities/banks.py
Normal file
@@ -0,0 +1,37 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user