Class: ReviewsIoImportWorker

Inherits:
Object
  • Object
show all
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:

  1. Fetches all product reviews from Reviews.io /reviews endpoint (paginated)
  2. Fetches all store/merchant reviews from Reviews.io /merchant/reviews endpoint (paginated)
  3. Upserts each review to the reviews_io table
  4. Marks reviews not seen in this import as deleted (per review type)

Manual trigger: ReviewsIoImportWorker.perform_async

Instance Method Summary collapse

Instance Method Details

#performObject



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