Class: ReviewsIoImportWorker
- Inherits:
-
Object
- Object
- ReviewsIoImportWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/reviews_io_import_worker.rb
Overview
Background worker to import reviews from Reviews.io API.
Runs daily at 4 AM Chicago time to keep local review data in sync.
The import process:
- Fetches all product reviews from Reviews.io /reviews endpoint (paginated)
- Fetches all store/merchant reviews from Reviews.io /merchant/reviews endpoint (paginated)
- Upserts each review to the reviews_io table
- Marks reviews not seen in this import as deleted (per review type)
Manual trigger: ReviewsIoImportWorker.perform_async
Instance Method Summary collapse
Instance Method Details
#perform ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/workers/reviews_io_import_worker.rb', line 18 def perform logger.info('[ReviewsIoImport] Starting daily reviews import') product_result = import_product_reviews store_result = import_store_reviews combined_result = combine_results(product_result, store_result) if combined_result[:errors].any? logger.error("[ReviewsIoImport] Import completed with errors: #{combined_result[:errors].join(', ')}") else logger.info("[ReviewsIoImport] Import completed successfully: " \ "products=(created=#{product_result[:created]}, updated=#{product_result[:updated]}, deleted=#{product_result[:deleted]}), " \ "store=(created=#{store_result[:created]}, updated=#{store_result[:updated]}, deleted=#{store_result[:deleted]})") end enqueue_media_imports if combined_result[:errors].empty? combined_result end |