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
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-17 21:34 +0000
1"""Routers for Job Rating related endpoints."""
3from datetime import datetime
5from fastapi import APIRouter, Depends, Query
6from sqlalchemy.orm import Session
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
15job_rating_service_log_router = APIRouter(prefix="/job-rating-service-logs", tags=["job-rating-service-logs"])
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"""
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 )
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"""
59 return routers.get_latest(current_user, db, models.JobRatingServiceLog)