1 Commits

Author SHA1 Message Date
ac27d12ed3 Add notification model (#31)
All checks were successful
CI / ci (push) Successful in 21s
Co-authored-by: Anibal Angulo <a8065384@banorte.com>
Reviewed-on: #31
2026-03-10 23:50:41 +00:00

View File

@@ -78,9 +78,7 @@ class NotificationDocument(BaseModel):
class NotificationBackend(Protocol):
"""Backend-agnostic interface for notification storage."""
async def get_recent_notifications(
self, phone_number: str
) -> list[Notification]:
async def get_recent_notifications(self, phone_number: str) -> list[Notification]:
"""Return recent notifications for *phone_number*."""
...
@@ -113,9 +111,7 @@ class FirestoreNotificationBackend:
self._max_to_notify = max_to_notify
self._window_hours = window_hours
async def get_recent_notifications(
self, phone_number: str
) -> list[Notification]:
async def get_recent_notifications(self, phone_number: str) -> list[Notification]:
"""Get recent notifications for a user.
Retrieves notifications created within the configured time window,
@@ -148,9 +144,7 @@ class FirestoreNotificationBackend:
cutoff = time.time() - (self._window_hours * 3600)
parsed = [
n
for n in document.notificaciones
if n.timestamp_creacion >= cutoff
n for n in document.notificaciones if n.timestamp_creacion >= cutoff
]
if not parsed:
@@ -212,9 +206,7 @@ class RedisNotificationBackend:
self._max_to_notify = max_to_notify
self._window_hours = window_hours
async def get_recent_notifications(
self, phone_number: str
) -> list[Notification]:
async def get_recent_notifications(self, phone_number: str) -> list[Notification]:
"""Get recent notifications for a user from Redis.
Reads from the ``notification:{phone}`` key, parses the JSON
@@ -246,9 +238,7 @@ class RedisNotificationBackend:
cutoff = time.time() - (self._window_hours * 3600)
parsed = [
n
for n in document.notificaciones
if n.timestamp_creacion >= cutoff
n for n in document.notificaciones if n.timestamp_creacion >= cutoff
]
if not parsed: