docbrown/app/workers/audience_segment_refresh_all_worker.rb
Joshua Wehner dc1ab81401
Allow DisplayAd to target users via audience segmentation (#19284)
* Trying some models for audience segmentation

* AudienceSegment basics

* Attach AudienceSegment to DisplayAd

* Possibly use a DUS to populate AudienceSegments

* Add to display ad form UI

* Add to display ad API

* Refresh strategy for audience segments

* Add user_id to async ads query

* Maybe :testing -> :manual, for no-refresh segment

* Test & tweak segment refresh

* Testing audience_segment#refresh logic

* Coverage: testing human_readable

* Scope segment refresh to recently active users

* Tweak logic for when to refresh

* Tweak experience levels to match SettingsHelper

* Test for front-end logic

* Fix test, hope this helps coverage?

* Better test names

* One worker for all, many workers for each, perform_bulk

* Fix audience segment UI, needs to use id, not enum

* cron/schedule should RefreshAll

* Singular id in RefreshWorker
2023-04-25 08:41:10 -04:00

13 lines
307 B
Ruby

class AudienceSegmentRefreshAllWorker
include Sidekiq::Worker
sidekiq_options queue: :low_priority
def perform
ids = DisplayAd.approved_and_published
.distinct(:audience_segment_id)
.pluck(:audience_segment_id).compact
AudienceSegmentRefreshWorker.perform_bulk([ids])
end
end