| from fastapi import HTTPException, status | |
| from sqlalchemy.orm import Session | |
| from . import models, schema | |
| async def new_user_register(request: schema.User, database: Session) -> models.User: | |
| """ | |
| Registers a new user in the database. | |
| This asynchronous function creates a new user entry in the database using the provided | |
| user details from the request. It adds the user to the database, commits the changes, | |
| and returns the newly created user. | |
| Args: | |
| request (schema.User): An object containing user details such as name, email, and password. | |
| database (Session): The database session used for adding and committing the user to the database. | |
| Returns: | |
| models.User: The newly created user entry stored in the database. | |
| """ | |
| new_user = models.User( | |
| name=request.name, email=request.email, password=request.password | |
| ) | |
| database.add(new_user) | |
| database.commit() | |
| database.refresh(new_user) | |
| return new_user | |
| async def all_users(database: Session) -> models.User: | |
| """ | |
| Retrieves all users from the database. | |
| This asynchronous function queries the database to retrieve a list of all users. | |
| Args: | |
| database (Session): The database session used for querying the database. | |
| Returns: | |
| list[models.User]: A list of all user entries in the database. | |
| """ | |
| return database.query(models.User).all() | |
| async def get_user_by_id(id: int, database: Session) -> models.User: | |
| """ | |
| Retrieves a user from the database by their ID. | |
| This asynchronous function queries the database for a user with the specified ID. | |
| If the user is not found, an HTTP 404 Not Found exception is raised. | |
| Args: | |
| id (int): The ID of the user to retrieve. | |
| database (Session): The database session used for querying the database. | |
| Returns: | |
| models.User: The user entry with the specified ID. | |
| Raises: | |
| HTTPException: If the user with the specified ID is not found. | |
| """ | |
| user = database.query(models.User).filter(models.User.id == id).first() | |
| if not user: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, | |
| detail=f"User with the id {id} is not available", | |
| ) | |
| return user | |
| async def delete_user_by_id(id: int, database: Session): | |
| """ | |
| Deletes a user from the database by their ID. | |
| This asynchronous function removes the user with the specified ID from the database | |
| and commits the changes. | |
| Args: | |
| id (int): The ID of the user to delete. | |
| database (Session): The database session used for querying and committing changes to the database. | |
| """ | |
| database.query(models.User).filter(models.User.id == id).delete() | |
| database.commit() | |