Spaces:
Sleeping
Sleeping
Add Delete expense endpoint for deleting user entries by user_id
Browse files
main.py
CHANGED
|
@@ -719,6 +719,40 @@ async def not_found_handler(request: Request, exc):
|
|
| 719 |
async def internal_error_handler(request: Request, exc):
|
| 720 |
return ORJSONResponse(status_code=500, content={"error": "Internal server error: " + str(exc)})
|
| 721 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 722 |
# List expenses of user by id
|
| 723 |
@app.get("/expenses/{user_id}", response_class=ORJSONResponse)
|
| 724 |
async def get_user_expenses(user_id: str):
|
|
|
|
| 719 |
async def internal_error_handler(request: Request, exc):
|
| 720 |
return ORJSONResponse(status_code=500, content={"error": "Internal server error: " + str(exc)})
|
| 721 |
|
| 722 |
+
# Delete user's Expenses
|
| 723 |
+
@app.delete("/expenses/{user_id}", response_class=ORJSONResponse)
|
| 724 |
+
async def delete_user_expenses(user_id: str):
|
| 725 |
+
if not user_id:
|
| 726 |
+
return ORJSONResponse(
|
| 727 |
+
status_code=400,
|
| 728 |
+
content={"error": "User ID is required"}
|
| 729 |
+
)
|
| 730 |
+
|
| 731 |
+
try:
|
| 732 |
+
conn = psycopg2.connect(DATABASE_URL)
|
| 733 |
+
cur = conn.cursor()
|
| 734 |
+
|
| 735 |
+
# Delete all entries for the user
|
| 736 |
+
cur.execute("DELETE FROM user_entries WHERE user_id = %s", (user_id,))
|
| 737 |
+
conn.commit()
|
| 738 |
+
|
| 739 |
+
cur.close()
|
| 740 |
+
conn.close()
|
| 741 |
+
|
| 742 |
+
return ORJSONResponse(
|
| 743 |
+
status_code=200,
|
| 744 |
+
content={
|
| 745 |
+
"message": "User entries deleted successfully",
|
| 746 |
+
"deleted_count": count
|
| 747 |
+
}
|
| 748 |
+
)
|
| 749 |
+
|
| 750 |
+
except Exception as e:
|
| 751 |
+
return ORJSONResponse(
|
| 752 |
+
status_code=500,
|
| 753 |
+
content={"error": f"Database error: {str(e)}"}
|
| 754 |
+
)
|
| 755 |
+
|
| 756 |
# List expenses of user by id
|
| 757 |
@app.get("/expenses/{user_id}", response_class=ORJSONResponse)
|
| 758 |
async def get_user_expenses(user_id: str):
|