Files
national-parks-api/app/services/seed/alerts.rb

24 lines
871 B
Ruby

class Seed::Alerts
def self.call(...)
new(...).call
end
def call
Park.find_each do |park|
offset, total = 0, 1
while offset < total do
response_body = NpsClient.current.alerts(park_code: park.code, offset: offset).body
offset = response_body['start'].to_i + response_body['limit'].to_i
total = response_body['total'].to_i
alerts = response_body['data']
.pluck('id', 'category', 'description', 'lastIndexedDate', 'parkCode', 'title', 'url')
.map do |identifier, category, description, indexed_date, park_code, title, url|
{ identifier:, category:, description:, indexed_date:, park_code:, title:, url: }
end
Alert.upsert_all(alerts, unique_by: :identifier)
Rails.logger.info("Upserted #{alerts.count} alerts for #{park.name}")
end
end
end
end