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()
The gateway:
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()
yields to:
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.
