Team Ai
Apppublic

Multimedika/Bot_Development

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
book_collection.py106 linesDownload Raw Back to router
1from typing import Annotated, List, Optional2from api.router.user import user_dependency3from api.auth import check_user_authentication4from fastapi import APIRouter, Depends5from db.database import get_db6from sqlalchemy.orm import Session7from db.query.query_user_meta import UserMetaQuery8from db.fetching import DataFetching9from utils.error_handlers import handle_exception10 11 12router = APIRouter(tags=["Book_Collection"])13db_dependency = Annotated[Session, Depends(get_db)]14 15 16@router.get("/book_collection")17async def get_book_collection(user: user_dependency, db: db_dependency):18    """Fetch user's book collection."""19    auth_response = check_user_authentication(user)20    if auth_response:21        return auth_response22 23    try:24 25        fetching = DataFetching(user, db)26        book_collection = fetching.collection_fetching()27        28        return {29            "status": "success",30            "book_collection": book_collection,31        }32    except Exception as e:33        return handle_exception(e)34 35 36@router.post("/book_collection")37async def request_book_collection(38    user: user_dependency, db: db_dependency, metadata_ids: List[Optional[int]]39):40    """Insert book collection metadata for a user."""41    auth_response = check_user_authentication(user)42    if auth_response:43        return auth_response44 45    user_meta_query = UserMetaQuery(user)46 47    try:48        return user_meta_query.insert_user_meta_entries(db, metadata_ids)49 50    except Exception as e:51        return handle_exception(e)52 53 54@router.put("/book_collection")55async def update_book_collection(56    user: user_dependency, db: db_dependency, metadata_ids: List[Optional[int]]57):58    """Update user's book collection metadata."""59    auth_response = check_user_authentication(user)60    if auth_response:61        return auth_response62 63    try:64        user_meta_query = UserMetaQuery(user)65        return user_meta_query.update_user_meta_entries(db, metadata_ids)66 67    except Exception as e:68        return handle_exception(e)69 70 71@router.delete("/book_collection/{metadata_id}")72async def delete_book_collection(73    user: user_dependency, db: db_dependency, metadata_id: int74):75    """Delete a specific book collection entry."""76    auth_response = check_user_authentication(user)77    if auth_response:78        return auth_response79 80    try:81        user_meta_query = UserMetaQuery(user)82        return user_meta_query.delete_user_meta(83            db, metadata_id=metadata_id84        )85    except Exception as e:86        return handle_exception(e)87 88 89@router.delete("/all_collections")90async def delete_all_book(user: user_dependency, db: db_dependency):91    """Delete all book collections for the authenticated user."""92    auth_response = check_user_authentication(user)93    if auth_response:94        return auth_response95 96    try:97        user_meta_query = UserMetaQuery(user)98        user_meta_query.delete_all_user_meta(db)99 100        return {101            "status": "success",102            "message": f"Deleted book collection for user {user.get('id')}",103        }104    except Exception as e:105        return handle_exception(e)106