From 04cc3869c2844bb82ac6975ee218141104385c35 Mon Sep 17 00:00:00 2001 From: Parker Date: Fri, 15 Nov 2024 00:30:43 -0600 Subject: Extra route + Much more UI --- api/routes/log_routes.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'api/routes/log_routes.py') diff --git a/api/routes/log_routes.py b/api/routes/log_routes.py index 84b8c51..5875e3b 100644 --- a/api/routes/log_routes.py +++ b/api/routes/log_routes.py @@ -21,6 +21,9 @@ async def get_logs( current_user: Annotated[User, Depends(get_current_user)], db=Depends(get_db), ): + """ + Get all of the logs associated with the current user + """ logs = ( db.query(Log) .filter(Log.owner == current_user.id) @@ -34,12 +37,47 @@ async def get_logs( return logs +@router.get("/{link}", summary="Get all logs for a specific link") +async def get_logs_for_link( + link: Annotated[str, Path(title="Link to get logs for")], + current_user: Annotated[User, Depends(get_current_user)], + db=Depends(get_db), +): + """ + Get all of the logs associated with a specific link + - check to make sure the requester is the owner + """ + link = ( + db.query(Link) + .filter(Link.owner == current_user.id, Link.short == link) + .first() + ) + if not link: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, detail="Link not found" + ) + logs = ( + db.query(Log) + .filter(Log.link_id == link.id) + .order_by(Log.timestamp.desc()) + .all() + ) + if not logs: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, detail="No logs found" + ) + return logs + + @router.get("/{log_id}", summary="Get a specific log") async def get_log( log_id: Annotated[int, Path(title="ID of log to delete")], current_user: Annotated[User, Depends(get_current_user)], db=Depends(get_db), ): + """ + Get a specific log (given the log ID) + """ log = ( db.query(Log) .filter(Log.id == log_id, Log.owner == current_user.id) @@ -58,6 +96,9 @@ async def delete_log( current_user: Annotated[User, Depends(get_current_user)], db=Depends(get_db), ): + """ + Delete a specific log (given the log ID) + """ log = ( db.query(Log) .filter(Log.id == log_id, Log.owner == current_user.id) -- cgit v1.2.3-70-g09d2