feat: mark prior failures as superseded on successful download
This commit is contained in:
@@ -5,7 +5,7 @@ import logging
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy import select, and_, or_
|
from sqlalchemy import select, and_, or_, update
|
||||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
|
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
|
||||||
from sqlalchemy.orm import selectinload
|
from sqlalchemy.orm import selectinload
|
||||||
|
|
||||||
@@ -300,6 +300,16 @@ async def _download_source_async(source_id: int, download_id: int = None) -> dic
|
|||||||
source.error_count = 0
|
source.error_count = 0
|
||||||
logger.info(f"Download completed for {subscription_name}/{source_platform}: {dl_result.files_downloaded} files")
|
logger.info(f"Download completed for {subscription_name}/{source_platform}: {dl_result.files_downloaded} files")
|
||||||
|
|
||||||
|
# Mark any prior failures for this source as superseded
|
||||||
|
await session.execute(
|
||||||
|
update(Download)
|
||||||
|
.where(
|
||||||
|
Download.source_id == source_id,
|
||||||
|
Download.status == DownloadStatus.FAILED,
|
||||||
|
)
|
||||||
|
.values(superseded=True)
|
||||||
|
)
|
||||||
|
|
||||||
publish_event("download.completed", {
|
publish_event("download.completed", {
|
||||||
"download_id": actual_download_id,
|
"download_id": actual_download_id,
|
||||||
"source_id": source_id,
|
"source_id": source_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user