diff --git a/src/use_cases/create_user.py b/src/use_cases/create_user.py index ea7ee47..df94ee9 100644 --- a/src/use_cases/create_user.py +++ b/src/use_cases/create_user.py @@ -2,18 +2,31 @@ from typing import Optional #dependency imports -#TODO: A1: Use correct dependencies +from entities.user import User +from use_cases.user_repository import IUserRepository -#TODO: A2: Create InputPort +class ICreateUserInputPort: + def execute(self, user_name:str, user_email:str, user_password:str): + """ + Abstract method to execute use case. + """ + raise NotImplementedError("execute must be implemented by a subclass") + +class ICreateUserOutputPort: + def present(self, user:User): + """ + Abstract method to execute use case. + """ + raise NotImplementedError("execute must be implemented by a subclass") -#TODO: A3: Create OutputPort +class CreateUser(ICreateUserInputPort): + def __init__(self, user_repository: IUserRepository, output_port: ICreateUserOutputPort): + self.user_repository = user_repository + self.output_port = output_port -#TODO: A5: Use Case CreateUser: -class CreateUser: - def __init__(self): - pass - #TODO: Initialize required Interfaces - - def execute(self): - pass - #TODO: Implement Use Case \ No newline at end of file + def execute(self, user_name:str, user_email:str, user_password:str): + """ + Creates a User. + """ + user = self.user_repository.create_user(user_name, user_email, user_password) + self.output_port.present(user) \ No newline at end of file diff --git a/src/use_cases/user_repository.py b/src/use_cases/user_repository.py index d566b8e..b305f67 100644 --- a/src/use_cases/user_repository.py +++ b/src/use_cases/user_repository.py @@ -1,5 +1,11 @@ -from typing import Optional, List +from typing import Optional + +#dependency imports +from entities.user import User class IUserRepository: - pass - #TODO: A4: Define interface functions for creating a user \ No newline at end of file + def create_user(self, user_name: str, user_email: str, user_password: str) -> Optional[User]: + """ + Abstract method to fetch product data by ID. + """ + raise NotImplementedError("get_product_by_id must be implemented by a subclass") \ No newline at end of file