Skeleton ready

This commit is contained in:
2026-07-08 23:01:55 +04:00
commit d9e5effdce
75 changed files with 1989 additions and 0 deletions

0
feature/__init__.py Normal file
View File

View File

View File

@@ -0,0 +1,15 @@
from typing import override
from kernel.feature.provider import Provider
from kernel.event.registrar import Registrar
from feature.listen_user_message.manager.message import Message
class ListenUserMessage(Provider, Registrar):
@override
def register(self) -> None:
self._container.register(Message, Message)
@override
def bootstrap(self) -> None:
pass

View File

@@ -0,0 +1,37 @@
from aio_pika.abc import AbstractIncomingMessage
from json import loads as json_loads
from kernel.application.enum.encoding import Encoding
from shared.bus.view.message import Message as BusMessage
class Message:
__message: AbstractIncomingMessage
__required_columns = [
"id",
"type",
"source",
"message",
]
def __init__(self, message: AbstractIncomingMessage) -> None:
self.__message = message
def get_message(self) -> BusMessage:
payload: str = self.__message.body.decode(Encoding.utf8)
payload_json: dict = json_loads(payload)
for column in self.__required_columns:
if column not in payload_json:
raise ValueError(
f"Missing required column: {column}"
)
return BusMessage(
id=payload_json["id"],
type=payload_json["type"],
source=payload_json["source"],
message=payload_json["message"]
)

View File

View File

@@ -0,0 +1,25 @@
from typing import override
from logging import Logger
from kernel.event.listener import Listener
from shared.bus.view.message import Message
class LogMessage(Listener[Message]):
@override
async def handle(self, event: str, payload: Message) -> None:
logger: Logger = self._container.resolve(Logger)
logger.info(f"Event: {event}\n")
content = (
f"Received message\n"
f"Id: {payload.id}\n"
f"Type: {payload.type}\n"
f"Source: {payload.source}\n"
f"Message: {payload.message}"
)
logger.debug(content)

View File

@@ -0,0 +1,18 @@
from typing import override
from kernel.feature.provider import Provider
from kernel.event.registrar import Registrar
from shared.event.type import Type as EventType
from feature.log_bus_message.listener.log_message import LogMessage
class LogBusMessage(Provider, Registrar):
@override
def register(self) -> None:
pass
@override
def bootstrap(self) -> None:
self.add_event_listener(EventType.MESSAGE_RECEIVED, LogMessage)