@@ -8,24 +8,25 @@ def initialize(dojos, period)
8
8
end
9
9
10
10
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' ] )
29
30
end
30
31
end
31
32
0 commit comments