implement controller solution
parent
1ca9dca2df
commit
3193960125
|
|
@ -11,3 +11,15 @@ class SQLUserRepository(IUserRepository):
|
|||
"""Initialize the UserDatabase with a connection to the SQLite database."""
|
||||
self.conn = sqlite3.connect(db_file)
|
||||
self.conn.row_factory = sqlite3.Row
|
||||
|
||||
def create_user(self, user_name, user_email, user_password):
|
||||
"""Add a new user to the users table and return the new user's id."""
|
||||
sql = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)"
|
||||
try:
|
||||
c = self.conn.cursor()
|
||||
c.execute(sql, (user_name, user_email, user_password))
|
||||
self.conn.commit()
|
||||
return User(user_name, user_email, user_password, c.lastrowid)
|
||||
except sqlite3.Error as e:
|
||||
print(e)
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -7,22 +7,49 @@ from fastapi.templating import Jinja2Templates
|
|||
from pydantic import BaseModel
|
||||
|
||||
#dependency imports
|
||||
#TODO: use correct dependencies
|
||||
from entities.user import User
|
||||
from use_cases.create_user import CreateUser, ICreateUserInputPort, ICreateUserOutputPort
|
||||
from interface_adapters.sql_user_repository import SQLUserRepository
|
||||
|
||||
|
||||
#TODO: define request and response data
|
||||
class UserDTO(BaseModel):
|
||||
id: int
|
||||
user_name: str
|
||||
user_email: str
|
||||
|
||||
class CreateUserRequest(BaseModel):
|
||||
pass
|
||||
user_name: str
|
||||
user_email: str
|
||||
user_password: str
|
||||
|
||||
class CreateUserResponse(BaseModel):
|
||||
pass
|
||||
status: str
|
||||
data: UserDTO
|
||||
|
||||
#TODO: implement CreateUserController and CreateUserPresenter
|
||||
class CreateUserPresenter(ICreateUserOutputPort):
|
||||
def present(self, user:User) -> CreateUserResponse:
|
||||
"""Format the response data for API."""
|
||||
if not user:
|
||||
return None
|
||||
user_dto = UserDTO(
|
||||
id = user.id,
|
||||
user_name = user.name,
|
||||
user_email = user.email)
|
||||
response = CreateUserResponse(status="success",data=user_dto)
|
||||
return response
|
||||
|
||||
class CreateUserController:
|
||||
def __init__(self, input_port: ICreateUserInputPort) -> None:
|
||||
self.input_port = input_port
|
||||
|
||||
#TODO: initialize all components
|
||||
create_user_controller = None
|
||||
def handle_request(self, request:CreateUserRequest):
|
||||
"""Handles the incoming API request and delegates to the use case."""
|
||||
return self.input_port.execute(request.user_name, request.user_email, request.user_password)
|
||||
|
||||
user_repository = SQLUserRepository()
|
||||
create_user_presenter = CreateUserPresenter()
|
||||
create_user_use_case = CreateUser(user_repository, create_user_presenter)
|
||||
create_user_controller = CreateUserController(create_user_use_case)
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
|
|
|||
Loading…
Reference in New Issue