Spaces:
Build error
Build error
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 | |
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 | |
async def get_users(): | |
users = await retrieve_users() | |
if users: | |
return ResponseModel(users, "Users data retrieved successfully") | |
return ResponseModel(users, "Empty list returned") | |
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 | |
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 | |
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) | |
) | |
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]): | |
return login_user(username, password) | |
# return {"username": username} | |
async def get_project(username: Annotated[str, Form()]): | |
return get_project_user(username) |