fix!: removed .commit() from repository level
This commit is contained in:
@@ -1,22 +1,17 @@
|
||||
import asyncio
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.dialects.postgresql import insert
|
||||
|
||||
from config import cfg
|
||||
from db.models import ServiceNotification, Subscription
|
||||
from db.session import async_session
|
||||
from db.session import UnitOfWork, async_session
|
||||
from schemas.enums import NotificationType
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
|
||||
async def collect_subscription_notifications(
|
||||
session: "AsyncSession", now: datetime | None = None
|
||||
) -> int:
|
||||
async def collect_subscription_notifications(uow: UnitOfWork, now: datetime | None = None) -> int:
|
||||
session = uow.session
|
||||
now = now or datetime.now(UTC)
|
||||
periods = (
|
||||
(NotificationType.SEVEN_DAYS, now + timedelta(days=3), now + timedelta(days=7)),
|
||||
@@ -48,7 +43,7 @@ async def collect_subscription_notifications(
|
||||
result = await session.execute(stmt)
|
||||
created += result.rowcount or 0
|
||||
|
||||
await session.commit()
|
||||
await uow.commit()
|
||||
return created
|
||||
|
||||
|
||||
@@ -56,8 +51,8 @@ async def run_subscription_notifications() -> None:
|
||||
interval = cfg.notification_scan_interval * 60
|
||||
while True:
|
||||
try:
|
||||
async with async_session() as session:
|
||||
await collect_subscription_notifications(session)
|
||||
async with async_session() as session, UnitOfWork(session) as uow:
|
||||
await collect_subscription_notifications(uow)
|
||||
except Exception:
|
||||
# A failed iteration must not stop subsequent notification checks.
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user