Spaces:
Build error
Build error
File size: 2,679 Bytes
1865436 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
from fastapi import APIRouter, Body, Form
from fastapi.encoders import jsonable_encoder
from typing_extensions import Annotated
from server.services import login_user, get_project_user
from server.database import (
add_user,
delete_user,
retrieve_user,
retrieve_users,
update_user,
)
from server.models.user import (
ErrorResponseModel,
ResponseModel,
UserSchema,
UpdateUserModel,
)
router = APIRouter()
# CREATE
@router.post("/", response_description="User data added into the database")
async def add_user_data(user: UserSchema = Body(...)):
user = jsonable_encoder(user)
new_user = await add_user(user)
return ResponseModel(new_user, "User added successfully.")
# READ
@router.get("/", response_description="Users retrieved")
async def get_users():
users = await retrieve_users()
if users:
return ResponseModel(users, "Users data retrieved successfully")
return ResponseModel(users, "Empty list returned")
@router.get("/{username}", response_description="User data retrieved")
async def get_user_data(username):
user = await retrieve_user(username)
if user:
return ResponseModel(user, "User data retrieved successfully")
return ErrorResponseModel("An error occurred.", 404, "User doesn't exist.")
# UPDATE
@router.put("/{username}")
async def update_user_data(username: str, req: UpdateUserModel = Body(...)):
req = {k: v for k, v in req.dict().items() if v is not None}
updated_user = await update_user(username, req)
if updated_user:
return ResponseModel(
"User with ID: {} name update is successful".format(id),
"User name updated successfully",
)
return ErrorResponseModel(
"An error occurred",
404,
"There was an error updating the user data.",
)
# DELETE
@router.delete("/{username}", response_description="User data deleted from the database")
async def delete_user_data(username: str):
deleted_user = await delete_user(username)
if deleted_user:
return ResponseModel(
"User with ID: {} removed".format(username), "User deleted successfully"
)
return ErrorResponseModel(
"An error occurred", 404, "User with username {0} doesn't exist".format(username)
)
@router.post("/login", response_description="User login")
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
return login_user(username, password)
# return {"username": username}
@router.post("/get_project", response_description="User login")
async def get_project(username: Annotated[str, Form()]):
return get_project_user(username) |