SIENTIAPDE-1325

Refactor MongoDB, Redis, and Gates classes to extend SientiaMonitoring instead of BaseActivity. Update requirements to point to local dataops library path. Implement repository pattern for MongoDB and Redis operations, enhancing code organization and maintainability.
This commit is contained in:
vitor-aignosi
2025-10-29 16:01:54 -03:00
parent 7265819ae0
commit 10b3310677
4 changed files with 55 additions and 78 deletions

View File

@@ -10,11 +10,12 @@ with workflow.unsafe.imports_passed_through():
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
from sientia_do.notifications.models import NotificationLevel
from sientia_do.observability.logger import Logger
from sientia_do.temporal.activities.redis_base import Redis as RedisBase
from sientia_do.observability.sientia_monitoring import SientiaMonitoring
from sientia_do.repository.redis_repository import RedisRepository
from sientia_do.temporal.constants import DATETIME_FORMAT, now
class Redis(RedisBase):
class Redis(SientiaMonitoring):
"""
Redis operations for data caching and temporary storage.
@@ -49,7 +50,22 @@ class Redis(RedisBase):
logger (Logger): Logger instance for operation logging
notification_handler (NotificationHandler): Handler for system notifications
"""
RedisBase.__init__(self, host, port, username, password, logger, notification_handler)
SientiaMonitoring.__init__(self, logger, notification_handler)
self.redis_repository = RedisRepository(
host=host,
port=port,
username=username,
password=password,
logger=logger,
notification_handler=notification_handler,
)
def close(self):
"""
Close the Redis connection.
"""
self.redis_repository.close()
SientiaMonitoring.shutdown(self)
@activity.defn(name='get_last_data_timestamp')
async def get_last_data_timestamp(self, input_data: dict[str, Any]) -> str | None:
@@ -79,7 +95,7 @@ class Redis(RedisBase):
self.info(f'Getting last data timestamp for {key}')
try:
data_hold = self.get(key)
data_hold = self.redis_repository.get(key)
except Exception as e:
self.send_notification(
metadata=metadata,
@@ -137,7 +153,7 @@ class Redis(RedisBase):
self.info(f'Last collected timestamp to insert: {last_data_timestamp}', metadata=metadata)
try:
self.set(key, last_data_timestamp, ttl=60 * 60 * 5)
self.redis_repository.set(key, last_data_timestamp, ttl=60 * 60 * 5)
except Exception as e:
self.send_notification(
metadata=metadata,
@@ -190,7 +206,7 @@ class Redis(RedisBase):
self.info(f'Getting held data for {key}')
try:
data_hold = self.get(key)
data_hold = self.redis_repository.get(key)
except Exception as e:
self.send_notification(
metadata=metadata,
@@ -234,7 +250,7 @@ class Redis(RedisBase):
data['timestamp'].max() if not data.empty else data_hold['timestamp']
)
self.set(key, data_hold, ttl=retention_time)
self.redis_repository.set(key, data_hold, ttl=retention_time)
data_hold_df = DataFrame(data_hold, index=[0])
data_hold_melted = data_hold_df.melt(
@@ -280,7 +296,7 @@ class Redis(RedisBase):
cache = {'data': data.to_dict(), 'held_data': held_data.to_dict()}
try:
self.set(key, cache, ttl=120)
self.redis_repository.set(key, cache, ttl=120)
except Exception as e:
self.send_notification(
metadata=metadata,