This commit is contained in:
2026-02-26 19:18:58 +05:00
commit 2fedc1ac18
18 changed files with 445 additions and 0 deletions

49
routers/tasks.py Normal file
View File

@@ -0,0 +1,49 @@
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy.orm import Session
from typing import List
import crud
import models
import schemas
from database import get_db
router = APIRouter(
prefix="/tasks",
tags=["tasks"]
)
@router.post("/", response_model=schemas.Task)
def create_task(task: schemas.TaskCreate, db: Session = Depends(get_db)):
return crud.create_task(db=db, task=task)
@router.get("/", response_model=List[schemas.Task])
def read_tasks(
skip: int = 0,
limit: int = 100,
telegram_user_id: str = Query(None, description="Filter by Telegram User ID"),
status: models.TaskStatus = Query(None, description="Filter by task status"),
db: Session = Depends(get_db)
):
tasks = crud.get_tasks(db, skip=skip, limit=limit, telegram_user_id=telegram_user_id, status=status)
return tasks
@router.get("/{task_id}", response_model=schemas.Task)
def read_task(task_id: int, telegram_user_id: str = Query(None, description="Telegram User ID for authorization"), db: Session = Depends(get_db)):
db_task = crud.get_task(db, task_id=task_id, telegram_user_id=telegram_user_id)
if db_task is None:
raise HTTPException(status_code=404, detail="Task not found")
return db_task
@router.put("/{task_id}", response_model=schemas.Task)
def update_task_endpoint(task_id: int, task: schemas.TaskUpdate, telegram_user_id: str = Query(None, description="Telegram User ID for authorization"), db: Session = Depends(get_db)):
db_task = crud.update_task(db, task_id=task_id, task_update=task, telegram_user_id=telegram_user_id)
if db_task is None:
raise HTTPException(status_code=404, detail="Task not found or you don't have access")
return db_task
@router.delete("/{task_id}")
def delete_task_endpoint(task_id: int, telegram_user_id: str = Query(None, description="Telegram User ID for authorization"), db: Session = Depends(get_db)):
success = crud.delete_task(db, task_id=task_id, telegram_user_id=telegram_user_id)
if not success:
raise HTTPException(status_code=404, detail="Task not found or you don't have access")
return {"message": "Task successfully deleted"}