Files
main_backend/cpv3/modules/jobs/service.py
T
2026-02-03 02:15:07 +03:00

54 lines
1.8 KiB
Python

from __future__ import annotations
import uuid
from sqlalchemy.ext.asyncio import AsyncSession
from cpv3.modules.jobs.models import Job, JobEvent
from cpv3.modules.jobs.repository import JobEventRepository, JobRepository
from cpv3.modules.jobs.schemas import (
JobCreate,
JobEventCreate,
JobEventUpdate,
JobUpdate,
)
from cpv3.modules.users.models import User
class JobService:
"""Service for job business logic and orchestration."""
def __init__(self, session: AsyncSession) -> None:
self._job_repo = JobRepository(session)
self._event_repo = JobEventRepository(session)
async def list_jobs(self, *, requester: User) -> list[Job]:
return await self._job_repo.list_all(requester=requester)
async def get_job(self, job_id: uuid.UUID) -> Job | None:
return await self._job_repo.get_by_id(job_id)
async def create_job(self, *, requester: User, data: JobCreate) -> Job:
return await self._job_repo.create(requester=requester, data=data)
async def update_job(self, job: Job, data: JobUpdate) -> Job:
return await self._job_repo.update(job, data)
async def deactivate_job(self, job: Job) -> None:
await self._job_repo.deactivate(job)
async def list_job_events(self) -> list[JobEvent]:
return await self._event_repo.list_all()
async def get_job_event(self, event_id: uuid.UUID) -> JobEvent | None:
return await self._event_repo.get_by_id(event_id)
async def create_job_event(self, data: JobEventCreate) -> JobEvent:
return await self._event_repo.create(data)
async def update_job_event(self, event: JobEvent, data: JobEventUpdate) -> JobEvent:
return await self._event_repo.update(event, data)
async def deactivate_job_event(self, event: JobEvent) -> None:
await self._event_repo.deactivate(event)