Coverage for app / main.py: 95%

39 statements  

« 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 

8 

9models.Base.metadata.create_all(bind=engine) 

10app = FastAPI(title="Task Manager API", version="1.0.0") 

11 

12@app.get("/", include_in_schema=False) 

13def root(): 

14 return FileResponse("static/index.html") 

15 

16@app.get("/api", include_in_schema=False) 

17def api_status(): 

18 return {"message": "Task Manager API is running", "version": "1.0.0"} 

19 

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) 

23 

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) 

27 

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 

33 

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 

39 

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") 

44 

45@app.get("/stats") 

46def get_stats(db: Session = Depends(get_db)): 

47 return service.get_task_stats(db) 

48 

49app.mount("/static", StaticFiles(directory="static"), name="static")