I am struggling with the clean architecure. I have constructed a minimal example of how a usecase/interactor could talk to the database without being dependent on it:
The use case:
class SaveDatatoDBUseCase: def __init__(self, AbstractDB): self.db = AbstractDB def execute(self): self.db.save()
from abc import ABC, abstractmethod class AbstractDB(ABC): def __init__(self, value): pass @abstractmethod def save(self): pass
The Implementation for the Database:
class DBImplemtation(AbstractDB): def __init__(self): pass def save(self): print("INSERT INTO TABLE WHERE ...")
Wiring it altogether:
if __name__ == "__main__": dbImpl = DBImplemtation() save_to_db_Usecase = SaveDatatoDBUseCase(dbImpl) save_to_db_Usecase.execute()
INSERT INTO TABLE WHERE ...
Is this how the communcation works between the UseCase/Interactor and the Database or I am I missing something here? I added a picture to clarify what I wanted to achieve with the code.
Can someone please confirm, whether this is a good minimal approach and if not, where I got this wrong or even what could be improved. Thank you in advance.