22 lines
706 B
Ruby
22 lines
706 B
Ruby
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
|