diff --git a/crud.py b/crud.py index ad5ffba..67e5356 100644 --- a/crud.py +++ b/crud.py @@ -1,4 +1,5 @@ from sqlalchemy.orm import Session +from typing import Optional import models, schemas @@ -29,8 +30,11 @@ def create_task(db:Session, task: schemas.TaskCreate): def get_task(db:Session, task_id: int): return db.query(models.Task).filter(models.Task.id == task_id).first() -def get_tasks(db: Session, skip: int = 0, limit: int = 10): - return db.query(models.Task).offset(skip).limit(limit).all() +def get_tasks(db: Session, skip: int = 0, limit: int = 10, completed: Optional[bool] = None): + query = db.query(models.Task) + if completed is not None: + query = query.filter(models.Task.completed == completed) + return query.offset(skip).limit(limit).all() def update_task(db:Session, task_id: int, data: schemas.TaskUpdate): db_task = db.query(models.Task).filter(models.Task.id == task_id).first() @@ -73,4 +77,4 @@ def delete_user(db: Session, user_id: int): return None db.delete(db_user) db.commit() - return db_user \ No newline at end of file + return db_user diff --git a/routers/tasks.py b/routers/tasks.py index 11b8199..921488e 100644 --- a/routers/tasks.py +++ b/routers/tasks.py @@ -1,6 +1,6 @@ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session -from typing import List +from typing import List, Optional import crud, schemas from database import get_db @@ -12,8 +12,8 @@ def create_task(task: schemas.TaskCreate, db: Session = Depends(get_db)): @router.get("/", response_model=List[schemas.TaskResponse]) -def get_tasks(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)): - return crud.get_tasks(db, skip=skip, limit=limit) +def get_tasks(skip: int = 0, limit: int = 10, completed: Optional[bool] = None, db: Session = Depends(get_db)): + return crud.get_tasks(db, skip=skip, limit=limit, completed=completed) @router.get("/{task_id}", response_model=schemas.TaskResponse) @@ -37,4 +37,4 @@ def delete_task(task_id: int, db: Session = Depends(get_db)): task = crud.delete_task(db, task_id) if not task: raise HTTPException(status_code=404, detail="Task not found") - return {"message": "Task deleted successfully"} \ No newline at end of file + return {"message": "Task deleted successfully"}