IWS_WS24_clean_architecture/src/use_cases/create_user.py

32 lines
1.1 KiB
Python

#python imports
from typing import Optional
#dependency imports
from entities.user import User
from use_cases.user_repository import IUserRepository
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")
class CreateUser(ICreateUserInputPort):
def __init__(self, user_repository: IUserRepository, output_port: ICreateUserOutputPort):
self.user_repository = user_repository
self.output_port = output_port
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)
return self.output_port.present(user)