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

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

2 

3from fastapi import APIRouter, Depends, Query 

4 

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 

10 

11job_rating_service_router = APIRouter(prefix="/job-rating-service-runner", tags=["job-rating-service-runner"]) 

12 

13 

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

22 

23 return routers.start_scraper(job_rating_service_runner, current_user, request.period_hours) 

24 

25 

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

32 

33 return routers.stop_scraper(job_rating_service_runner, current_user) 

34 

35 

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

42 

43 return routers.scraper_status(job_rating_service_runner, current_user) 

44 

45 

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

54 

55 return routers.get_service_logs(SERVICE_NAME, lines, current_user)