Delete tasks & edit tasks fixes v0.0.8
This commit is contained in:
parent
8b787309d8
commit
8ef005cd3a
65
api.py
65
api.py
@ -42,25 +42,41 @@ def create_user(user: UserCreate, session: SessionDep):
|
|||||||
session.refresh(db_user)
|
session.refresh(db_user)
|
||||||
return db_user
|
return db_user
|
||||||
|
|
||||||
|
# generated using Claude 3.5 Sonnet
|
||||||
@app.patch("/user/update-tasks", response_model=UserPublic)
|
@app.patch("/user/update-tasks", response_model=UserPublic)
|
||||||
async def update_user_task(task: UpdateTask, session: SessionDep, current_user: User = Depends(get_current_user)):
|
async def update_user_task(task: UpdateTask, session: SessionDep, current_user: User = Depends(get_current_user)):
|
||||||
user_db = session.get(User, current_user.id)
|
user_db = session.get(User, current_user.id)
|
||||||
user_data = task.model_dump(exclude_unset=True)
|
user_data = task.model_dump(exclude_unset=True)
|
||||||
|
|
||||||
new_task = user_data
|
new_task = user_data
|
||||||
|
|
||||||
|
print(new_task['task_id']);
|
||||||
|
|
||||||
if user_db.tasks is None:
|
if user_db.tasks is None:
|
||||||
user_db.tasks = []
|
user_db.tasks = []
|
||||||
|
|
||||||
# Filter out the task with matching title and keep all others
|
# Create a copy of current tasks
|
||||||
updated_tasks = [
|
updated_tasks = user_db.tasks.copy()
|
||||||
task for task in user_db.tasks
|
|
||||||
if task['title'] != new_task['title']
|
# Check if task_id exists in user_db tasks
|
||||||
]
|
existing_task = next(
|
||||||
|
(task for task in updated_tasks if task.get('task_id') == new_task.get('task_id')),
|
||||||
# Add the new task to the filtered list
|
None
|
||||||
updated_tasks.append(new_task)
|
)
|
||||||
|
|
||||||
# Update user_db tasks with the new list
|
if existing_task:
|
||||||
|
# Overwrite the existing task with the new task
|
||||||
|
for i, task in enumerate(updated_tasks):
|
||||||
|
if task['task_id'] == new_task['task_id']:
|
||||||
|
updated_tasks[i] = new_task
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
# Generate new task_id if not provided
|
||||||
|
if new_task.get('task_id') is None:
|
||||||
|
new_task['task_id'] = len(updated_tasks)
|
||||||
|
# Append the new task
|
||||||
|
updated_tasks.append(new_task)
|
||||||
|
|
||||||
|
# Update user_db tasks with the modified list
|
||||||
user_db.tasks = updated_tasks
|
user_db.tasks = updated_tasks
|
||||||
|
|
||||||
# Update the session
|
# Update the session
|
||||||
@ -70,6 +86,31 @@ async def update_user_task(task: UpdateTask, session: SessionDep, current_user:
|
|||||||
|
|
||||||
return user_db
|
return user_db
|
||||||
|
|
||||||
|
@app.delete("/user/delete-task", response_model=UserPublic)
|
||||||
|
async def delete_user_task(task: DeleteTask, session: SessionDep, current_user: User = Depends(get_current_user)):
|
||||||
|
user_db = session.get(User, current_user.id)
|
||||||
|
user_data = task.model_dump(exclude_unset=True)
|
||||||
|
task_id = user_data['task_id']
|
||||||
|
|
||||||
|
if user_db.tasks is None:
|
||||||
|
return {"detail": "No tasks to delete"}
|
||||||
|
|
||||||
|
# Create a copy of current tasks
|
||||||
|
updated_tasks = user_db.tasks.copy()
|
||||||
|
|
||||||
|
# Remove the task with the specified task_id
|
||||||
|
updated_tasks = [task for task in updated_tasks if task.get('task_id') != task_id]
|
||||||
|
|
||||||
|
# Update user_db tasks with the modified list
|
||||||
|
user_db.tasks = updated_tasks
|
||||||
|
|
||||||
|
# Update the session
|
||||||
|
session.add(user_db)
|
||||||
|
session.commit()
|
||||||
|
session.refresh(user_db)
|
||||||
|
|
||||||
|
return user_db
|
||||||
|
|
||||||
@app.patch("/user/update", response_model=UserPublic)
|
@app.patch("/user/update", response_model=UserPublic)
|
||||||
async def update_user(user: UserUpdate, session: SessionDep, current_user: User = Depends(get_current_user)):
|
async def update_user(user: UserUpdate, session: SessionDep, current_user: User = Depends(get_current_user)):
|
||||||
user_db = session.get(User, current_user.id)
|
user_db = session.get(User, current_user.id)
|
||||||
|
@ -16,11 +16,16 @@ class Task(BaseModel):
|
|||||||
title: str
|
title: str
|
||||||
description: str | None = None
|
description: str | None = None
|
||||||
is_completed: bool | None = Field(default=False)
|
is_completed: bool | None = Field(default=False)
|
||||||
|
task_id: int | None = None
|
||||||
|
|
||||||
class UpdateTask(BaseModel):
|
class UpdateTask(BaseModel):
|
||||||
title: str | None = None
|
title: str | None = None
|
||||||
description: str | None = None
|
description: str | None = None
|
||||||
is_completed: bool | None = Field(default=None)
|
is_completed: bool | None = Field(default=None)
|
||||||
|
task_id: int | None = None
|
||||||
|
|
||||||
|
class DeleteTask(BaseModel):
|
||||||
|
task_id: int
|
||||||
|
|
||||||
# User models
|
# User models
|
||||||
class UserBase(SQLModel):
|
class UserBase(SQLModel):
|
||||||
|
Loading…
Reference in New Issue
Block a user