Woodpecker event registered

This commit is contained in:
Piotr Dec 2025-10-31 23:30:35 +01:00
parent 87e8af3f72
commit 29dfc13a48
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
3 changed files with 16 additions and 13 deletions

View file

@ -1,22 +1,25 @@
import logging 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.events import SimpleEventBus
from app.model.webhook import WebhookEvent from app.model.webhook import WebhookEvent
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@injectable
class Woodpecker:
@SimpleEventBus.on(WebhookEvent) @injectable(singleton=True)
def on_event(self, event): # TODO: caller nie działa -> brakuje instancji klasy? 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}") logger.info(f"Received event: {event}")
pass pass
@SimpleEventBus.on(WebhookEvent) instance = Woodpecker(inject(SimpleEventBus))
def on_event2(event): # TODO: Tu działa injectable_factory(Woodpecker)(lambda: instance)
logger.info(f"F2: Received event: {event}")
pass

View file

@ -18,9 +18,9 @@ class SimpleEventBus:
self._executor = ThreadPoolExecutor() self._executor = ThreadPoolExecutor()
def publish(self, event: Event) -> None: def publish(self, event: Event) -> None:
for handler in self._handlers.get(type(event), []): for handler in self._handlers.get(type(event), []):
# Fire-and-forget execution # Fire-and-forget execution
self._executor.submit(handler, event) self._executor.submit(handler, event)
def subscribe(self, event_type: type, handler: Callable) -> None: def subscribe(self, event_type: type, handler: Callable) -> None:
if event_type not in self._handlers: if event_type not in self._handlers:

View file

@ -4,7 +4,7 @@ logging:
app: app:
host: "127.0.0.1" host: "127.0.0.1"
port: 8081 port: 8081
reload: true reload: false
git: git:
path: "F:/IdeaProjects/paas/karl/.compose_repository" path: "F:/IdeaProjects/paas/karl/.compose_repository"
branch: "main" branch: "main"