class Seed::Parks def self.call(...) new(...).call end def call offset, total = 0, 1 while offset < total do response_body = NpsClient.current.parks(offset: offset).body offset = response_body['start'].to_i + response_body['limit'].to_i total = response_body['total'].to_i parks = response_body['data'] .pluck('parkCode', 'name', 'states', 'activities', 'operatingHours') .map do |code, name, states, activities, operating_hours| { code:, name:, properties: { activities:, operating_hours: } } end Park.upsert_all(parks, unique_by: :code) Rails.logger.info("Upserted #{parks.count} national parks") end end end