From 1addc4630bafbd4e47d557665b57ff96a61d7bf9 Mon Sep 17 00:00:00 2001 From: rakuda Date: Fri, 8 Aug 2025 13:22:14 +0900 Subject: [PATCH 1/6] =?UTF-8?q?doorkeeper=E3=81=AE=E3=82=A4=E3=83=99?= =?UTF-8?q?=E3=83=B3=E3=83=88=E5=8F=96=E5=BE=97=E3=81=A7=E3=80=81=E3=82=A4?= =?UTF-8?q?=E3=83=99=E3=83=B3=E3=83=88=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E3=82=AD=E3=83=BC=E3=82=92=E3=82=B7=E3=83=B3=E3=83=9C=E3=83=AB?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/event_service/providers/doorkeeper.rb | 2 +- lib/upcoming_events/tasks/doorkeeper.rb | 28 ++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/event_service/providers/doorkeeper.rb b/lib/event_service/providers/doorkeeper.rb index c8d6c8387..8d9409cc6 100644 --- a/lib/event_service/providers/doorkeeper.rb +++ b/lib/event_service/providers/doorkeeper.rb @@ -31,7 +31,7 @@ def fetch_events(group_id:, since_at: @default_since, until_at: @default_until) break if part.size.zero? - events.push(*part.map { |e| e['event'] }) + events.push(*part.map { |e| e[:event] }) break if part.size < 25 # 25 items / 1 request diff --git a/lib/upcoming_events/tasks/doorkeeper.rb b/lib/upcoming_events/tasks/doorkeeper.rb index 5c4365ca2..d884d746a 100644 --- a/lib/upcoming_events/tasks/doorkeeper.rb +++ b/lib/upcoming_events/tasks/doorkeeper.rb @@ -13,20 +13,22 @@ def run events = @client.fetch_events(**@params.merge(group_id: dojo_event_service.group_id)) puts "[Doorkeeper] dojo_id: #{dojo.id}, group_id: #{dojo_event_service.group_id}, fetched events: #{events&.size || 0}" (events || []).compact.each do |e| - puts "[Doorkeeper] event_id: #{e.fetch('id')}, title: #{e.fetch('title')}" - next unless e.fetch('group').to_s == dojo_event_service.group_id + puts "[Doorkeeper] event_id: #{e.fetch(:id)}, title: #{e.fetch(:title)}" + next unless e.fetch(:group).to_s == dojo_event_service.group_id - record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e.fetch('id')) - record.update!(service_name: dojo_event_service.name, - event_title: e.fetch('title'), - event_url: e.fetch('public_url'), - participants: e.fetch('participants'), - event_at: Time.zone.parse(e.fetch('starts_at')), - event_end_at: Time.zone.parse(e.fetch('ends_at')), - event_update_at: Time.zone.parse(e.fetch('updated_at')), - address: e.fetch('address'), - place: e.fetch('venue_name'), - limit: e.fetch('ticket_limit')) + record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e.fetch(:id)) + record.update!( + service_name: dojo_event_service.name, + event_title: e.fetch(:title), + event_url: e.fetch(:public_url), + participants: e.fetch(:participants), + event_at: Time.zone.parse(e.fetch(:starts_at)), + event_end_at: Time.zone.parse(e.fetch(:ends_at)), + event_update_at: Time.zone.parse(e.fetch(:updated_at)), + address: e.fetch(:address), + place: e.fetch(:venue_name), + limit: e.fetch(:ticket_limit) + ) end end end From 7c24f015ea8aaad837368d1dd6080ad5488825a3 Mon Sep 17 00:00:00 2001 From: rakuda Date: Fri, 8 Aug 2025 16:08:31 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=81=AE=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/upcoming_events/tasks/doorkeeper.rb | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/upcoming_events/tasks/doorkeeper.rb b/lib/upcoming_events/tasks/doorkeeper.rb index d884d746a..c6383c57c 100644 --- a/lib/upcoming_events/tasks/doorkeeper.rb +++ b/lib/upcoming_events/tasks/doorkeeper.rb @@ -17,18 +17,16 @@ def run next unless e.fetch(:group).to_s == dojo_event_service.group_id record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e.fetch(:id)) - record.update!( - service_name: dojo_event_service.name, - event_title: e.fetch(:title), - event_url: e.fetch(:public_url), - participants: e.fetch(:participants), - event_at: Time.zone.parse(e.fetch(:starts_at)), - event_end_at: Time.zone.parse(e.fetch(:ends_at)), - event_update_at: Time.zone.parse(e.fetch(:updated_at)), - address: e.fetch(:address), - place: e.fetch(:venue_name), - limit: e.fetch(:ticket_limit) - ) + record.update!(service_name: dojo_event_service.name, + event_title: e.fetch(:title), + event_url: e.fetch(:public_url), + participants: e.fetch(:participants), + event_at: Time.zone.parse(e.fetch(:starts_at)), + event_end_at: Time.zone.parse(e.fetch(:ends_at)), + event_update_at: Time.zone.parse(e.fetch(:updated_at)), + address: e.fetch(:address), + place: e.fetch(:venue_name), + limit: e.fetch(:ticket_limit)) end end end From a8be062314fe1174d4c9cae7d856574e8e8310c9 Mon Sep 17 00:00:00 2001 From: rakuda Date: Fri, 8 Aug 2025 17:34:54 +0900 Subject: [PATCH 3/6] =?UTF-8?q?Doorkeeper=E3=81=AEUpcomingEvents=E3=81=AE?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=83=96=E3=82=92=E9=85=8D=E5=88=97=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/support/shared_contexts/statistics.rb | 54 ++++++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/spec/support/shared_contexts/statistics.rb b/spec/support/shared_contexts/statistics.rb index 329917e1f..819c6cdbc 100644 --- a/spec/support/shared_contexts/statistics.rb +++ b/spec/support/shared_contexts/statistics.rb @@ -128,16 +128,50 @@ [ 200, { 'Content-Type' => 'application/json' }, - '[{"event":{"title":"CoderDojo title","id":1234,"starts_at":"' + - "#{Time.zone.today + 1.month}T01:00:00.000Z" + '","ends_at":"' + - "#{Time.zone.today + 1.month}T04:00:00.000Z" + '","venue_name":"奥多摩町","address":"奥多摩町","lat":"35.801763000000","long":"139.087656000000","ticket_limit":30,"published_at":"' + - "#{Time.zone.today - 4.days}T03:43:04.000Z" + '","updated_at":"' + - "#{Time.zone.today}T11:31:21.810Z" + '","group":5555,"banner":null,"description":"CoderDojo description","public_url":"https://coderdojo-okutama.doorkeeper.jp/events/8888","participants":12,"waitlisted":0}},' + - '{"event":{"title":"CoderDojo title","id":2345,"starts_at":"' + - "#{Time.zone.today + 1.month + 1.day}T01:00:00.000Z" + '","ends_at":"' + - "#{Time.zone.today + 1.month + 1.day}T04:00:00.000Z" + '","venue_name":"奥多摩町","address":"奥多摩町","lat":"35.801763000000","long":"139.087656000000","ticket_limit":30,"published_at":"' + - "#{Time.zone.today - 4.days}T03:43:04.000Z" + '","updated_at":"' + - "#{Time.zone.today}T11:31:21.810Z" + '","group":5555,"banner":null,"description":"CoderDojo description","public_url":"https://coderdojo-okutama.doorkeeper.jp/events/8888","participants":12,"waitlisted":0}}]' + [ + { + event: { + title: "CoderDojo title", + id: 1234, + starts_at: "#{Time.zone.today + 1.month}T01:00:00.000Z", + ends_at: "#{Time.zone.today + 1.month}T04:00:00.000Z", + venue_name: "奥多摩町", + address: "奥多摩町", + lat: "35.801763000000", + long: "139.087656000000", + ticket_limit: 30, + published_at: "#{Time.zone.today - 4.days}T03:43:04.000Z", + updated_at: "#{Time.zone.today}T11:31:21.810Z", + group: 5555, + banner: nil, + description: "CoderDojo description", + public_url: "https://coderdojo-okutama.doorkeeper.jp/events/8888", + participants: 12, + waitlisted: 0 + } + }, + { + event: { + title: "CoderDojo title", + id: 2345, + starts_at: "#{Time.zone.today + 1.month + 1.day}T01:00:00.000Z", + ends_at: "#{Time.zone.today + 1.month + 1.day}T04:00:00.000Z", + venue_name: "奥多摩町", + address: "奥多摩町", + lat: "35.801763000000", + long: "139.087656000000", + ticket_limit: 30, + published_at: "#{Time.zone.today - 4.days}T03:43:04.000Z", + updated_at: "#{Time.zone.today}T11:31:21.810Z", + group: 5555, + banner: nil, + description: "CoderDojo description", + public_url: "https://coderdojo-okutama.doorkeeper.jp/events/8888", + participants: 12, + waitlisted: 0 + } + } + ] ] end end From da73e01c24307aa249e35081dcd047b13c024d54 Mon Sep 17 00:00:00 2001 From: rakuda Date: Fri, 8 Aug 2025 17:45:23 +0900 Subject: [PATCH 4/6] =?UTF-8?q?Doorkeeper=E3=81=AE=E3=82=A4=E3=83=99?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E3=83=8F?= =?UTF-8?q?=E3=83=83=E3=82=B7=E3=83=A5=E3=81=8B=E3=82=89=E9=85=8D=E5=88=97?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=E3=81=97=E3=80=81=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=82=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../providers/doorkeeper_spec.rb | 4 ++-- spec/support/shared_contexts/statistics.rb | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/spec/lib/event_service/providers/doorkeeper_spec.rb b/spec/lib/event_service/providers/doorkeeper_spec.rb index 427f3afcd..666b6ad57 100644 --- a/spec/lib/event_service/providers/doorkeeper_spec.rb +++ b/spec/lib/event_service/providers/doorkeeper_spec.rb @@ -21,8 +21,8 @@ it do expect(subject).to be_instance_of(Array) expect(subject.size).to eq 1 - expect(subject.first['id']).to eq 1234 - expect(subject.first['group']).to eq 5555 + expect(subject.first[:id]).to eq 1234 + expect(subject.first[:group]).to eq 5555 end end end diff --git a/spec/support/shared_contexts/statistics.rb b/spec/support/shared_contexts/statistics.rb index 819c6cdbc..79ee3f8d8 100644 --- a/spec/support/shared_contexts/statistics.rb +++ b/spec/support/shared_contexts/statistics.rb @@ -83,7 +83,29 @@ [ 200, { 'Content-Type' => 'application/json' }, - '[{"event":{"title":"CoderDojo title","id":1234,"starts_at":"2017-05-28T01:00:00.000Z","ends_at":"2017-05-28T04:00:00.000Z","venue_name":"奥多摩町","address":"奥多摩町","lat":"35.801763000000","long":"139.087656000000","ticket_limit":30,"published_at":"2017-04-22T03:43:04.000Z","updated_at":"2017-05-10T11:31:21.810Z","group":5555,"banner":null,"description":"CoderDojo description","public_url":"https://coderdojo-okutama.doorkeeper.jp/events/8888","participants":12,"waitlisted":0}}]' + [ + { + event: { + title: "CoderDojo title", + id: 1234, + starts_at: "2017-05-28T01:00:00.000Z", + ends_at: "2017-05-28T04:00:00.000Z", + venue_name: "奥多摩町", + address: "奥多摩町", + lat: "35.801763000000", + long: "139.087656000000", + ticket_limit: 30, + published_at: "2017-04-22T03:43:04.000Z", + updated_at: "2017-05-10T11:31:21.810Z", + group: 5555, + banner: nil, + description: "CoderDojo description", + public_url: "https://coderdojo-okutama.doorkeeper.jp/events/8888", + participants: 12, + waitlisted: 0 + } + } + ] ] end end From 66aa59d948ba7ae2845895dc72976e2b7f7ada53 Mon Sep 17 00:00:00 2001 From: rakuda Date: Fri, 8 Aug 2025 17:47:56 +0900 Subject: [PATCH 5/6] =?UTF-8?q?#search=20=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=A7=E3=82=AD=E3=83=BC=E3=82=92=E6=96=87=E5=AD=97?= =?UTF-8?q?=E5=88=97=E3=81=8B=E3=82=89=E3=82=B7=E3=83=B3=E3=83=9C=E3=83=AB?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/lib/event_service/providers/doorkeeper_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/lib/event_service/providers/doorkeeper_spec.rb b/spec/lib/event_service/providers/doorkeeper_spec.rb index 666b6ad57..43d1f4860 100644 --- a/spec/lib/event_service/providers/doorkeeper_spec.rb +++ b/spec/lib/event_service/providers/doorkeeper_spec.rb @@ -10,8 +10,8 @@ it do expect(subject).to be_instance_of(Array) expect(subject.size).to eq 1 - expect(subject.first['event']['id']).to eq 1234 - expect(subject.first['event']['group']).to eq 5555 + expect(subject.first[:event][:id]).to eq 1234 + expect(subject.first[:event][:group]).to eq 5555 end end From d14608feb9005de0fb26cb3bea5cb5ca0eb83ce9 Mon Sep 17 00:00:00 2001 From: Yohei Yasukawa Date: Fri, 8 Aug 2025 19:46:14 +0900 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20Doorkeeper=E3=82=A4=E3=83=99?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E3=82=AD?= =?UTF-8?q?=E3=83=BC=E3=82=92=E3=82=B7=E3=83=B3=E3=83=9C=E3=83=AB=E3=81=AB?= =?UTF-8?q?=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Statistics::Tasks::Doorkeeperで文字列キーでアクセスしていたが、 EventService::Providers::Doorkeeperがシンボルキーで返すように 変更されたため、統計集計でDoorkeeperイベントが作成されない問題を修正。 また、テストスタブの日付を動的に生成するように変更し、 期間に応じた正しいイベント数が作成されるように調整した。 --- lib/statistics/tasks/doorkeeper.rb | 10 +++++----- spec/support/shared_contexts/statistics.rb | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/statistics/tasks/doorkeeper.rb b/lib/statistics/tasks/doorkeeper.rb index 0100edb30..12c3f425a 100644 --- a/lib/statistics/tasks/doorkeeper.rb +++ b/lib/statistics/tasks/doorkeeper.rb @@ -20,16 +20,16 @@ def run dojo.dojo_event_services.for(:doorkeeper).each do |dojo_event_service| events = @client.fetch_events(**@params.merge(group_id: dojo_event_service.group_id)) (events || []).compact.each do |e| - next unless e['group'].to_s == dojo_event_service.group_id + next unless e[:group].to_s == dojo_event_service.group_id EventHistory.create!(dojo_id: dojo.id, dojo_name: dojo.name, service_name: dojo_event_service.name, service_group_id: dojo_event_service.group_id, - event_id: e['id'], - event_url: e['public_url'], - participants: e['participants'], - evented_at: Time.zone.parse(e['starts_at'])) + event_id: e[:id], + event_url: e[:public_url], + participants: e[:participants], + evented_at: Time.zone.parse(e[:starts_at])) end end end diff --git a/spec/support/shared_contexts/statistics.rb b/spec/support/shared_contexts/statistics.rb index 79ee3f8d8..00206b568 100644 --- a/spec/support/shared_contexts/statistics.rb +++ b/spec/support/shared_contexts/statistics.rb @@ -88,15 +88,15 @@ event: { title: "CoderDojo title", id: 1234, - starts_at: "2017-05-28T01:00:00.000Z", - ends_at: "2017-05-28T04:00:00.000Z", + starts_at: (Time.zone.today.prev_month + 10.days).to_time.utc.iso8601, + ends_at: (Time.zone.today.prev_month + 10.days + 3.hours).to_time.utc.iso8601, venue_name: "奥多摩町", address: "奥多摩町", lat: "35.801763000000", long: "139.087656000000", ticket_limit: 30, - published_at: "2017-04-22T03:43:04.000Z", - updated_at: "2017-05-10T11:31:21.810Z", + published_at: (Time.zone.today.prev_month - 5.days).to_time.utc.iso8601, + updated_at: (Time.zone.today.prev_month - 1.day).to_time.utc.iso8601, group: 5555, banner: nil, description: "CoderDojo description",