From d3444464063057a0b8f31251260ebca52cddf0e5 Mon Sep 17 00:00:00 2001 From: ShukeBta <272197458+ShukeBta@users.noreply.github.com> Date: Wed, 24 Jun 2026 21:42:30 +0800 Subject: [PATCH] refactor: split subscription site search completion --- internal/service/subscription_site_search.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/internal/service/subscription_site_search.go b/internal/service/subscription_site_search.go index 207e989..c81c42e 100644 --- a/internal/service/subscription_site_search.go +++ b/internal/service/subscription_site_search.go @@ -62,12 +62,21 @@ func (s *SubscriptionService) runSiteSearch(ctx context.Context, sub *model.Subs Availability: availability, } queueResult := s.enqueueSiteSearchCandidates(ctx, sub, candidates, runState) - availability = s.finalizePendingAvailability(sub, runState.Availability) - seen = trimSiteSearchSeen(runState.Seen) + availability = s.finishSiteSearchRun(ctx, sub, guidKey, runState) + return s.handleSiteSearchQueueResult(sub, keyword, queueResult, selectionStats, availability) +} + +func (s *SubscriptionService) finishSiteSearchRun(ctx context.Context, sub *model.Subscription, guidKey string, state *siteSearchRunState) LocalAvailability { + availability := s.finalizePendingAvailability(sub, state.Availability) + seen := trimSiteSearchSeen(state.Seen) _ = s.repo.Setting.Set(ctx, guidKey, strings.Join(seen, "\n")) now := time.Now() _ = s.repo.DB.Model(sub).Updates(map[string]any{"last_run_at": &now}).Error _ = s.archiveCompletedSubscription(ctx, sub, availability) + return availability +} + +func (s *SubscriptionService) handleSiteSearchQueueResult(sub *model.Subscription, keyword string, queueResult siteSearchQueueResult, selectionStats siteSearchSelectionStats, availability LocalAvailability) (int, error) { if queueResult.Queued > 0 { s.hub.Publish("subscription", map[string]any{ "id": sub.ID,