Coverage for backend / app / job_rating / routers / service_log.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-17 21:34 +0000

1"""Routers for Job Rating related endpoints.""" 

2 

3from datetime import datetime 

4 

5from fastapi import APIRouter, Depends, Query 

6from sqlalchemy.orm import Session 

7 

8from app import models 

9from app.core.oauth2 import get_current_user 

10from app.database import get_db 

11from app.job_rating import schemas 

12from app.service_runner import routers 

13 

14 

15job_rating_service_log_router = APIRouter(prefix="/job-rating-service-logs", tags=["job-rating-service-logs"]) 

16 

17 

18# GET endpoint for admins to get the service logs 

19@job_rating_service_log_router.get("/", response_model=list[schemas.JobRatingServiceLogOut]) 

20def get_service_logs_by_date_range( 

21 start_date: datetime | None = Query(None, description="Start date for filtering (ISO format)"), 

22 end_date: datetime | None = Query(None, description="End date for filtering (ISO format)"), 

23 delta_days: int | None = Query(None, description="Number of days to go back in time"), 

24 limit: int | None = Query(None, description="Maximum number of logs to return"), 

25 current_user: models.User = Depends(get_current_user), 

26 db: Session = Depends(get_db), 

27): 

28 """Get service logs within a specified date range. Admin access required. 

29 :param start_date: Optional start date filter (inclusive) 

30 :param end_date: Optional end date filter (inclusive) 

31 :param limit: Optional limit for number of logs to return 

32 :param delta_days: Optional number of days to go back in time 

33 :param current_user: Current authenticated admin user 

34 :param db: Database session 

35 :return: list of service logs within the date range ordered by run_datetime descending""" 

36 

37 return routers.get_service_logs_by_date_range( 

38 start_date, 

39 end_date, 

40 delta_days, 

41 limit, 

42 current_user, 

43 db, 

44 models.JobRatingServiceLog, 

45 ) 

46 

47 

48# GET endpoint for admin user to get the latest service log 

49@job_rating_service_log_router.get("/latest", response_model=schemas.JobRatingServiceLogOut) 

50def get_latest( 

51 current_user: models.User = Depends(get_current_user), 

52 db: Session = Depends(get_db), 

53): 

54 """Get the latest service log entry. Admin access required. 

55 :param current_user: Current authenticated admin user 

56 :param db: Database session 

57 :return: Latest service log entry""" 

58 

59 return routers.get_latest(current_user, db, models.JobRatingServiceLog)