Skip to content

Commit 5eefcc6

Browse files
committed
call connpass API with multiple series_ids
1 parent 24dddee commit 5eefcc6

File tree

2 files changed

+36
-34
lines changed

2 files changed

+36
-34
lines changed

lib/statistics/tasks/connpass.rb

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,25 @@ def initialize(dojos, period)
1414
end
1515

1616
def run
17-
@dojos.each do |dojo|
18-
dojo.dojo_event_services.for(:connpass).each do |dojo_event_service|
19-
@client.fetch_events(**@params.merge(series_id: dojo_event_service.group_id)).each do |e|
20-
next unless e.dig('series', 'id').to_s == dojo_event_service.group_id
21-
22-
EventHistory.create!(dojo_id: dojo.id,
23-
dojo_name: dojo.name,
24-
service_name: dojo_event_service.name,
25-
service_group_id: dojo_event_service.group_id,
26-
event_id: e['event_id'],
27-
event_url: e['event_url'],
28-
participants: e['accepted'],
29-
evented_at: Time.zone.parse(e['started_at']))
30-
end
31-
end
17+
group_ids = @dojos.flat_map do |dojo|
18+
dojo.dojo_event_services.for(:connpass).pluck(:group_id)
19+
end
20+
21+
@client.fetch_events(**@params.merge(series_id: group_ids)).each do |e|
22+
dojo_event_service = DojoEventService.find_by(group_id: e.dig('series', 'id').to_s)
23+
next unless dojo_event_service
24+
25+
EventHistory.create!(dojo_id: dojo_event_service.dojo_id,
26+
dojo_name: dojo_event_service.dojo.name,
27+
service_name: dojo_event_service.name,
28+
service_group_id: dojo_event_service.group_id,
29+
event_id: e['event_id'],
30+
event_url: e['event_url'],
31+
participants: e['accepted'],
32+
evented_at: Time.zone.parse(e['started_at']))
3233
end
3334
end
34-
35+
3536
private
3637

3738
def build_params(period)

lib/upcoming_events/tasks/connpass.rb

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,25 @@ def initialize(dojos, period)
88
end
99

1010
def run
11-
@dojos.each do |dojo|
12-
dojo.dojo_event_services.for(:connpass).each do |dojo_event_service|
13-
@client.fetch_events(**@params.merge(series_id: dojo_event_service.group_id)).each do |e|
14-
next unless e.dig('series', 'id').to_s == dojo_event_service.group_id
15-
16-
record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e['event_id'])
17-
record.update!(service_name: dojo_event_service.name,
18-
event_title: e['title'],
19-
event_url: e['event_url'],
20-
event_at: Time.zone.parse(e['started_at']),
21-
event_end_at: Time.zone.parse(e['ended_at']),
22-
participants: e['accepted'],
23-
event_update_at: Time.zone.parse(e['updated_at']),
24-
address: e['address'],
25-
place: e['place'],
26-
limit: e['limit'])
27-
end
28-
end
11+
group_ids = @dojos.flat_map do |dojo|
12+
dojo.dojo_event_services.for(:connpass).pluck(:group_id)
13+
end
14+
15+
@client.fetch_events(**@params.merge(series_id: group_ids)).each do |e|
16+
dojo_event_service = DojoEventService.find_by(group_id: e.dig('series', 'id').to_s)
17+
next unless dojo_event_service
18+
19+
record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e['event_id'])
20+
record.update!(service_name: dojo_event_service.name,
21+
event_title: e['title'],
22+
event_url: e['event_url'],
23+
event_at: Time.zone.parse(e['started_at']),
24+
event_end_at: Time.zone.parse(e['ended_at']),
25+
participants: e['accepted'],
26+
event_update_at: Time.zone.parse(e['updated_at']),
27+
address: e['address'],
28+
place: e['place'],
29+
limit: e['limit'])
2930
end
3031
end
3132

0 commit comments

Comments
 (0)