Feat/tool based coordinator routing (#5)
Co-authored-by: Michael <michael@example.com> Reviewed-on: #5
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import logging
|
||||
from pydantic import BaseModel
|
||||
from typing import Any
|
||||
from gitea.models import IssueModel, PullRequestModel
|
||||
|
||||
logger: logging.Logger = logging.getLogger("work-queue")
|
||||
|
||||
|
||||
class WorkItem(BaseModel):
|
||||
repo_full_name: str
|
||||
@@ -21,6 +24,7 @@ class WorkQueue:
|
||||
def enqueue(self, item: WorkItem) -> None:
|
||||
self._queue.append(item)
|
||||
self._enqueued_repos.add(item.repo_full_name)
|
||||
logger.info(f"Enqueued work item: {item.task_type} #{item.task_number} for {item.repo_full_name}")
|
||||
|
||||
def enqueue_batch(self, items: list[WorkItem]) -> None:
|
||||
for item in items:
|
||||
@@ -31,6 +35,7 @@ class WorkQueue:
|
||||
items: list[WorkItem] = [
|
||||
item for item in self._queue if item.repo_full_name == repo
|
||||
]
|
||||
logger.info(f"Retrieved {len(items)} work items for repository: {repo}")
|
||||
return items
|
||||
|
||||
def remove_repo_work(self, repo: str) -> None:
|
||||
@@ -39,6 +44,7 @@ class WorkQueue:
|
||||
item for item in self._queue if item.repo_full_name != repo
|
||||
]
|
||||
self._enqueued_repos.discard(repo)
|
||||
logger.info(f"Removed all work items for repository: {repo}")
|
||||
|
||||
def get_next_repo(self) -> str | None:
|
||||
"""Get the next repo with work, or None if empty."""
|
||||
|
||||
Reference in New Issue
Block a user