|
| 1 | +from dependency_injector.wiring import Provide, inject |
1 | 2 | from fastapi import APIRouter, Depends, Query |
2 | 3 |
|
3 | | -from core.fastapi.dependencies import ( |
4 | | - PermissionDependency, |
5 | | - IsAdmin, |
6 | | -) |
7 | | -from app.user.adapter.input.api.v1.request import LoginRequest, CreateUserRequest |
| 4 | +from app.container import Container |
| 5 | +from app.user.adapter.input.api.v1.request import CreateUserRequest, LoginRequest |
8 | 6 | from app.user.adapter.input.api.v1.response import LoginResponse |
9 | | -from app.user.application.dto import CreateUserResponseDTO |
10 | | -from app.user.application.dto import GetUserListResponseDTO |
11 | | -from app.user.application.service.user import UserService |
| 7 | +from app.user.application.dto import CreateUserResponseDTO, GetUserListResponseDTO |
12 | 8 | from app.user.domain.command import CreateUserCommand |
| 9 | +from app.user.domain.usecase.user import UserUseCase |
| 10 | +from core.fastapi.dependencies import IsAdmin, PermissionDependency |
13 | 11 |
|
14 | 12 | user_router = APIRouter() |
15 | 13 |
|
|
19 | 17 | response_model=list[GetUserListResponseDTO], |
20 | 18 | dependencies=[Depends(PermissionDependency([IsAdmin]))], |
21 | 19 | ) |
| 20 | +@inject |
22 | 21 | async def get_user_list( |
23 | 22 | limit: int = Query(10, description="Limit"), |
24 | 23 | prev: int = Query(None, description="Prev ID"), |
| 24 | + usecase: UserUseCase = Depends(Provide[Container.user_service]), |
25 | 25 | ): |
26 | | - return await UserService().get_user_list(limit=limit, prev=prev) |
| 26 | + return await usecase.get_user_list(limit=limit, prev=prev) |
27 | 27 |
|
28 | 28 |
|
29 | 29 | @user_router.post( |
30 | 30 | "", |
31 | 31 | response_model=CreateUserResponseDTO, |
32 | 32 | ) |
33 | | -async def create_user(request: CreateUserRequest): |
| 33 | +@inject |
| 34 | +async def create_user( |
| 35 | + request: CreateUserRequest, |
| 36 | + usecase: UserUseCase = Depends(Provide[Container.user_service]), |
| 37 | +): |
34 | 38 | command = CreateUserCommand(**request.model_dump()) |
35 | | - await UserService().create_user(command=command) |
| 39 | + await usecase.create_user(command=command) |
36 | 40 | return {"email": request.email, "nickname": request.nickname} |
37 | 41 |
|
38 | 42 |
|
39 | 43 | @user_router.post( |
40 | 44 | "/login", |
41 | 45 | response_model=LoginResponse, |
42 | 46 | ) |
43 | | -async def login(request: LoginRequest): |
44 | | - token = await UserService().login(email=request.email, password=request.password) |
| 47 | +@inject |
| 48 | +async def login( |
| 49 | + request: LoginRequest, |
| 50 | + usecase: UserUseCase = Depends(Provide[Container.user_service]), |
| 51 | +): |
| 52 | + token = await usecase.login(email=request.email, password=request.password) |
45 | 53 | return {"token": token.token, "refresh_token": token.refresh_token} |
0 commit comments