Coverage for backend / app / job_rating / routers / service_runner.py: 79%
19 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 fastapi import APIRouter, Depends, Query
5from app import models
6from app.core.oauth2 import get_current_user
7from app.job_rating import schemas
8from app.job_rating.scraped_job_rating import job_rating_service_runner, SERVICE_NAME
9from app.service_runner import routers
11job_rating_service_router = APIRouter(prefix="/job-rating-service-runner", tags=["job-rating-service-runner"])
14@job_rating_service_router.post("/start")
15def start_scraper(
16 request: schemas.JobRatingServiceLogStartRequest,
17 current_user: models.User = Depends(get_current_user),
18) -> dict:
19 """Start the email scraping service with the specified period.
20 :param request: StartRequest object containing period_hours
21 :param current_user: Current authenticated user"""
23 return routers.start_scraper(job_rating_service_runner, current_user, request.period_hours)
26@job_rating_service_router.post("/stop")
27def stop_scraper(
28 current_user: models.User = Depends(get_current_user),
29) -> dict:
30 """Stop the email scraping service.
31 :param current_user: Current authenticated user"""
33 return routers.stop_scraper(job_rating_service_runner, current_user)
36@job_rating_service_router.get("/status")
37def scraper_status(
38 current_user: models.User = Depends(get_current_user),
39) -> dict:
40 """Get the current status of the email scraping service.
41 :param current_user: Current authenticated user"""
43 return routers.scraper_status(job_rating_service_runner, current_user)
46@job_rating_service_router.get("/logs")
47def get_scraper_logs(
48 lines: int = Query(100, ge=1, le=10000),
49 current_user: models.User = Depends(get_current_user),
50):
51 """Get the last N lines from the scraper log file
52 :param lines: Number of lines to retrieve (default 100, max 10000)
53 :param current_user: Current authenticated user"""
55 return routers.get_service_logs(SERVICE_NAME, lines, current_user)