|
1 |
| -from typing import Annotated |
2 |
| - |
3 |
| -from fastapi import FastAPI, HTTPException, Path, Query |
| 1 | +from fastapi import FastAPI |
4 | 2 |
|
| 3 | +from src.models.movies import MovieModel |
5 | 4 | from src.models.users import UserModel
|
6 |
| -from src.schemas.users import ( |
7 |
| - UserCreateRequest, |
8 |
| - UserResponse, |
9 |
| - UserSearchParams, |
10 |
| - UserUpdateRequest, |
11 |
| -) |
| 5 | +from src.routers.movie_router import movie_router |
| 6 | +from src.routers.user_router import user_router |
12 | 7 |
|
13 | 8 | app = FastAPI()
|
14 | 9 |
|
15 |
| -UserModel.create_dummy() |
16 |
| - |
17 |
| - |
18 |
| -@app.post("/users") |
19 |
| -async def create_user(data: UserCreateRequest) -> int: |
20 |
| - user = UserModel(**data.model_dump()) |
21 |
| - return user.id |
22 |
| - |
23 |
| - |
24 |
| -@app.get("/users", response_model=list[UserResponse]) |
25 |
| -async def get_all_users() -> list[UserModel]: |
26 |
| - result = UserModel.all() |
27 |
| - if not result: |
28 |
| - raise HTTPException(status_code=404) |
29 |
| - return result |
30 |
| - |
31 |
| - |
32 |
| -@app.get("/users/search", response_model=list[UserResponse]) |
33 |
| -async def search_users(query_params: Annotated[UserSearchParams, Query()]) -> list[UserModel]: |
34 |
| - valid_query = {key: value for key, value in query_params.model_dump().items() if value is not None} |
35 |
| - filtered_users = UserModel.filter(**valid_query) |
36 |
| - if not filtered_users: |
37 |
| - raise HTTPException(status_code=404) |
38 |
| - return filtered_users |
39 |
| - |
40 |
| - |
41 |
| -@app.get("/users/{user_id}", response_model=UserResponse) |
42 |
| -async def get_user(user_id: int = Path(gt=0)) -> UserModel: |
43 |
| - user = UserModel.get(id=user_id) |
44 |
| - if user is None: |
45 |
| - raise HTTPException(status_code=404) |
46 |
| - return user |
47 |
| - |
48 |
| - |
49 |
| -@app.patch("/users/{user_id}", response_model=UserResponse) |
50 |
| -async def update_user(data: UserUpdateRequest, user_id: int = Path(gt=0)) -> UserModel: |
51 |
| - user = UserModel.get(id=user_id) |
52 |
| - if user is None: |
53 |
| - raise HTTPException(status_code=404) |
54 |
| - user.update(**data.model_dump()) |
55 |
| - return user |
56 |
| - |
57 |
| - |
58 |
| -@app.delete("/users/{user_id}") |
59 |
| -async def delete_user(user_id: int = Path(gt=0)) -> dict[str, str]: |
60 |
| - user = UserModel.get(id=user_id) |
61 |
| - if user is None: |
62 |
| - raise HTTPException(status_code=404) |
63 |
| - user.delete() |
64 |
| - |
65 |
| - return {"detail": f"User: {user_id}, Successfully Deleted."} |
| 10 | +# include router in app |
| 11 | +app.include_router(user_router) |
| 12 | +app.include_router(movie_router) |
66 | 13 |
|
| 14 | +# create dummy for test |
| 15 | +UserModel.create_dummy() |
| 16 | +MovieModel.create_dummy() |
67 | 17 |
|
68 | 18 | if __name__ == "__main__":
|
69 | 19 | import uvicorn
|
|
0 commit comments