From 526f4fc0c3fa3f0f2459d96509b9f6687ee7c087 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sat, 23 Aug 2025 22:36:37 +0000 Subject: [PATCH] update last seen property when processing listings to refresh data --- crawler/listing_processor.py | 3 +++ crawler/repositories/listing_repository.py | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/crawler/listing_processor.py b/crawler/listing_processor.py index 7414a0a..0ae7f26 100644 --- a/crawler/listing_processor.py +++ b/crawler/listing_processor.py @@ -17,9 +17,11 @@ logger = logging.getLogger("uvicorn.error") class ListingProcessor: semaphore: asyncio.Semaphore process_steps: list[Step] + listing_repository: ListingRepository def __init__(self, listing_repository: ListingRepository): self.semaphore = asyncio.Semaphore(20) + self.listing_repository = listing_repository # Register new processing steps here # Order is important self.process_steps = [ @@ -29,6 +31,7 @@ class ListingProcessor: ] async def process_listing(self, listing_id: int) -> Listing | None: + await self.listing_repository.mark_seen(listing_id) listing = None for step in self.process_steps: if await step.needs_processing(listing_id): diff --git a/crawler/repositories/listing_repository.py b/crawler/repositories/listing_repository.py index 69c1219..b4c7e65 100644 --- a/crawler/repositories/listing_repository.py +++ b/crawler/repositories/listing_repository.py @@ -193,3 +193,12 @@ class ListingRepository: ) return model_listing + + async def mark_seen(self, listing_id: int) -> None: + listings = await self.get_listings(only_ids=[listing_id]) + if len(listings) == 0: + return + listing = listings[0] + now = datetime.now() + listing.last_seen = now + await self.upsert_listings([listing])