From 29dfc13a48a4910780de9a10e0f5990a9e49ec54 Mon Sep 17 00:00:00 2001 From: Piotr Dec Date: Fri, 31 Oct 2025 23:30:35 +0100 Subject: [PATCH] Woodpecker event registered --- app/core/woodpecker.py | 21 ++++++++++++--------- app/events/__init__.py | 6 +++--- config/config.yaml | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/app/core/woodpecker.py b/app/core/woodpecker.py index 8236bf5..9b6ffb4 100644 --- a/app/core/woodpecker.py +++ b/app/core/woodpecker.py @@ -1,22 +1,25 @@ import logging +from typing import Annotated -from injectable import injectable +from injectable import injectable, Autowired, autowired, inject, injectable_factory from app.events import SimpleEventBus from app.model.webhook import WebhookEvent logger = logging.getLogger(__name__) -@injectable -class Woodpecker: - @SimpleEventBus.on(WebhookEvent) - def on_event(self, event): # TODO: caller nie działa -> brakuje instancji klasy? +@injectable(singleton=True) +class Woodpecker: + @autowired + def __init__(self, event_bus: Annotated[SimpleEventBus, Autowired]): + logger.info("Woodpecker initialized.") + event_bus.subscribe(WebhookEvent, self.on_ci_event) + + def on_ci_event(self, event): logger.info(f"Received event: {event}") pass -@SimpleEventBus.on(WebhookEvent) -def on_event2(event): # TODO: Tu działa - logger.info(f"F2: Received event: {event}") - pass +instance = Woodpecker(inject(SimpleEventBus)) +injectable_factory(Woodpecker)(lambda: instance) diff --git a/app/events/__init__.py b/app/events/__init__.py index fbd92d2..5d54a87 100644 --- a/app/events/__init__.py +++ b/app/events/__init__.py @@ -18,9 +18,9 @@ class SimpleEventBus: self._executor = ThreadPoolExecutor() def publish(self, event: Event) -> None: - for handler in self._handlers.get(type(event), []): - # Fire-and-forget execution - self._executor.submit(handler, event) + for handler in self._handlers.get(type(event), []): + # Fire-and-forget execution + self._executor.submit(handler, event) def subscribe(self, event_type: type, handler: Callable) -> None: if event_type not in self._handlers: diff --git a/config/config.yaml b/config/config.yaml index 6c2043e..c4fc44a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -4,7 +4,7 @@ logging: app: host: "127.0.0.1" port: 8081 - reload: true + reload: false git: path: "F:/IdeaProjects/paas/karl/.compose_repository" branch: "main"