Coverage for app / main.py: 95%
39 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-23 08:14 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-23 08:14 +0000
1from fastapi import FastAPI, HTTPException, Depends, Query
2from fastapi.staticfiles import StaticFiles
3from fastapi.responses import FileResponse
4from sqlalchemy.orm import Session
5from typing import List, Optional
6from app import models, schemas, service
7from app.database import engine, get_db
9models.Base.metadata.create_all(bind=engine)
10app = FastAPI(title="Task Manager API", version="1.0.0")
12@app.get("/", include_in_schema=False)
13def root():
14 return FileResponse("static/index.html")
16@app.get("/api", include_in_schema=False)
17def api_status():
18 return {"message": "Task Manager API is running", "version": "1.0.0"}
20@app.get("/tasks", response_model=List[schemas.TaskResponse])
21def list_tasks(completed: Optional[bool] = Query(None), priority: Optional[str] = Query(None), db: Session = Depends(get_db)):
22 return service.get_tasks(db, completed=completed, priority=priority)
24@app.post("/tasks", response_model=schemas.TaskResponse, status_code=201)
25def create_task(task: schemas.TaskCreate, db: Session = Depends(get_db)):
26 return service.create_task(db, task)
28@app.get("/tasks/{task_id}", response_model=schemas.TaskResponse)
29def get_task(task_id: int, db: Session = Depends(get_db)):
30 t = service.get_task(db, task_id)
31 if not t: raise HTTPException(404, "Task not found")
32 return t
34@app.patch("/tasks/{task_id}", response_model=schemas.TaskResponse)
35def update_task(task_id: int, task_data: schemas.TaskUpdate, db: Session = Depends(get_db)):
36 t = service.update_task(db, task_id, task_data)
37 if not t: raise HTTPException(404, "Task not found")
38 return t
40@app.delete("/tasks/{task_id}", status_code=204)
41def delete_task(task_id: int, db: Session = Depends(get_db)):
42 if not service.delete_task(db, task_id):
43 raise HTTPException(404, "Task not found")
45@app.get("/stats")
46def get_stats(db: Session = Depends(get_db)):
47 return service.get_task_stats(db)
49app.mount("/static", StaticFiles(directory="static"), name="static")