File size: 1,584 Bytes
5378afe | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | """
任务管理服务
封装任务相关的业务逻辑
"""
from typing import List, Optional
from src.domain.models.task import Task, TaskCreate, TaskUpdate
from src.domain.repositories.task_repository import TaskRepository
class TaskService:
"""任务管理服务"""
def __init__(self, repository: TaskRepository):
self.repository = repository
async def get_all_tasks(self) -> List[Task]:
"""获取所有任务"""
return await self.repository.find_all()
async def get_task(self, task_id: int) -> Optional[Task]:
"""获取单个任务"""
return await self.repository.find_by_id(task_id)
async def create_task(self, task_create: TaskCreate) -> Task:
"""创建新任务"""
task = Task(**task_create.dict(), is_running=False)
return await self.repository.save(task)
async def update_task(self, task_id: int, task_update: TaskUpdate) -> Task:
"""更新任务"""
task = await self.repository.find_by_id(task_id)
if not task:
raise ValueError(f"任务 {task_id} 不存在")
updated_task = task.apply_update(task_update)
return await self.repository.save(updated_task)
async def delete_task(self, task_id: int) -> bool:
"""删除任务"""
return await self.repository.delete(task_id)
async def update_task_status(self, task_id: int, is_running: bool) -> Task:
"""更新任务运行状态"""
task_update = TaskUpdate(is_running=is_running)
return await self.update_task(task_id, task_update)
|