Skip to content

Commit 79c3150

Browse files
committed
レビュー指摘事項対応
・関連見直し ・リファクタ ・不要なコメント削除
1 parent 41cc1cb commit 79c3150

File tree

11 files changed

+30
-56
lines changed

11 files changed

+30
-56
lines changed

app/models/dojo.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ class Dojo < ApplicationRecord
66
belongs_to :prefecture
77
has_many :dojo_event_services, dependent: :destroy
88
has_many :event_histories, dependent: :destroy
9-
has_many :upcoming_events, dependent: :destroy
109

1110
serialize :tags
1211
before_save { self.email = self.email.downcase }

app/models/dojo_event_service.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ class DojoEventService < ApplicationRecord
33
INTERNAL_SERVICES = %i( static_yaml )
44

55
belongs_to :dojo
6+
has_many :upcoming_events, dependent: :destroy
67

78
enum name: EXTERNAL_SERVICES + INTERNAL_SERVICES
89

app/models/upcoming_event.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class UpcomingEvent < ApplicationRecord
2-
belongs_to :dojo
2+
belongs_to :dojo_event_service
33

44
validates :dojo_name, presence: true
55
validates :service_name, presence: true, uniqueness: { scope: :event_id }
Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
11
class ModColumnsToUpcomingEvent < ActiveRecord::Migration[5.1]
22
def up
3-
remove_index :upcoming_events, :dojo_event_service_id
43
remove_index :upcoming_events, :event_at
5-
remove_column :upcoming_events, :dojo_event_service_id
64

7-
add_reference :upcoming_events, :dojo, foreign_key: true, index: true, null: false
85
add_column :upcoming_events, :dojo_name, :string, null: false
96
add_column :upcoming_events, :service_name, :string, null: false
107
add_column :upcoming_events, :participants, :integer, null: false
118
end
129

1310
def down
14-
remove_reference :upcoming_events, :dojo, findex: true
1511
remove_column :upcoming_events, :dojo_name, :string, null: false
1612
remove_column :upcoming_events, :service_name, :string, null: false
1713
remove_column :upcoming_events, :participants, :integer, null: false
1814

19-
add_column :upcoming_events, :dojo_event_service_id, :integer, null: false, default: 1
20-
add_index :upcoming_events, :dojo_event_service_id, name: "index_upcoming_events_on_dojo_event_service_id"
2115
add_index :upcoming_events, :event_at, name: "index_upcoming_events_on_event_at"
2216
end
2317
end

db/schema.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,13 @@
8383
t.string "event_id", null: false
8484
t.string "event_url", null: false
8585
t.datetime "event_at", null: false
86-
t.bigint "dojo_id", null: false
86+
t.integer "dojo_event_service_id", default: 1, null: false
8787
t.string "dojo_name", null: false
8888
t.string "service_name", null: false
8989
t.integer "participants", null: false
90-
t.index ["dojo_id"], name: "index_upcoming_events_on_dojo_id"
90+
t.index ["dojo_event_service_id"], name: "index_upcoming_events_on_dojo_event_service_id"
9191
end
9292

9393
add_foreign_key "dojo_event_services", "dojos"
9494
add_foreign_key "event_histories", "dojos"
95-
add_foreign_key "upcoming_events", "dojos"
9695
end

lib/upcoming_events/aggregation.rb

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ def initialize(args)
44
@from = Time.zone.today
55
@to = @from + 2.months
66
@provider = args[:provider]
7-
dojos = fetch_dojos(@provider)
87
# NOTE: 対象は一旦収集可能な connpass, doorkeeper のみにする
9-
@externals = dojos[:externals]
10-
# @internals = dojos[:internals]
8+
@externals = fetch_dojos(@provider)
119
end
1210

1311
def run
@@ -21,25 +19,15 @@ def run
2119
private
2220

2321
def fetch_dojos(provider)
24-
if provider.blank?
25-
# 全プロバイダ対象
26-
external_services = DojoEventService::EXTERNAL_SERVICES
27-
internal_services = DojoEventService::INTERNAL_SERVICES
28-
else
29-
external_services = []
30-
internal_services = []
31-
case provider
32-
when 'connpass', 'doorkeeper', 'facebook'
33-
external_services = [provider.to_sym]
34-
when 'static_yaml'
35-
internal_services = [provider.to_sym]
36-
end
37-
end
38-
39-
{
40-
externals: find_dojos_by(external_services),
41-
internals: find_dojos_by(internal_services)
42-
}
22+
base_providers = DojoEventService::EXTERNAL_SERVICES - [:facebook]
23+
services = if provider.blank?
24+
# 全プロバイダ対象
25+
base_providers
26+
elsif base_providers.include?(provider.to_sym)
27+
[provider.to_sym]
28+
end
29+
return [] unless services
30+
find_dojos_by(services)
4331
end
4432

4533
def find_dojos_by(services)
@@ -62,10 +50,6 @@ def delete_upcoming_events
6250
def execute
6351
target_period = @from..@to
6452
@externals.each do |kind, list|
65-
unless [:connpass, :doorkeeper].include?(kind)
66-
puts "Aggregate of #{kind} --> skip"
67-
next
68-
end
6953
puts "Aggregate of #{kind}"
7054
"UpcomingEvents::Tasks::#{kind.to_s.camelize}".constantize.new(list, target_period).run
7155
end

lib/upcoming_events/tasks.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,3 @@ module Tasks
55

66
require_relative 'tasks/connpass'
77
require_relative 'tasks/doorkeeper'
8-
# require_relative 'tasks/facebook'
9-
# require_relative 'tasks/static_yaml'

lib/upcoming_events/tasks/connpass.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ def run
1313
@client.fetch_events(@params.merge(series_id: dojo_event_service.group_id)).each do |e|
1414
next unless e.dig('series', 'id').to_s == dojo_event_service.group_id
1515

16-
record = UpcomingEvent.find_or_initialize_by(dojo_id: dojo.id,
17-
service_name: dojo_event_service.name,
18-
event_id: e['event_id'])
19-
record.update!(dojo_name: dojo.name,
20-
event_url: e['event_url'],
21-
event_at: Time.zone.parse(e['started_at']),
16+
record = dojo_event_service.upcoming_events.find_by(event_id: e['event_id'])
17+
record ||= dojo_event_service.upcoming_events.build(event_id: e['event_id'])
18+
record.update!(dojo_name: dojo.name,
19+
service_name: dojo_event_service.name,
20+
event_url: e['event_url'],
21+
event_at: Time.zone.parse(e['started_at']),
2222
participants: e['accepted'])
2323
end
2424
end

lib/upcoming_events/tasks/doorkeeper.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ def run
1313
@client.fetch_events(@params.merge(group_id: dojo_event_service.group_id)).each do |e|
1414
next unless e['group'].to_s == dojo_event_service.group_id
1515

16-
record = UpcomingEvent.find_or_initialize_by(dojo_id: dojo.id,
17-
service_name: dojo_event_service.name,
18-
event_id: e['id'])
16+
record = dojo_event_service.upcoming_events.find_by(event_id: e['id'])
17+
record ||= dojo_event_service.upcoming_events.build(event_id: e['id'])
1918
record.update!(dojo_name: dojo.name,
19+
service_name: dojo_event_service.name,
2020
event_url: e['public_url'],
2121
participants: e['participants'],
2222
event_at: Time.zone.parse(e['starts_at']))

spec/factories/upcoming_events.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
FactoryBot.define do
44
factory :upcoming_event do
5-
# dojo_id
65
dojo_name { 'Dojo Name' }
76
service_name { :connpass }
87
event_id { '1234' }

spec/lib/upcoming_events/aggregation_spec.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
before do
1010
@d1 = create(:dojo, name: 'Dojo1', email: 'info@dojo1.com', description: 'CoderDojo1', tags: %w(CoderDojo1), url: 'https://dojo1.com')
1111
@d2 = create(:dojo, name: 'Dojo2', email: 'info@dojo2.com', description: 'CoderDojo2', tags: %w(CoderDojo2), url: 'https://dojo2.com')
12-
create(:dojo_event_service, dojo_id: @d1.id, name: :connpass, group_id: 9876)
13-
create(:dojo_event_service, dojo_id: @d2.id, name: :doorkeeper, group_id: 5555)
12+
@es1 = create(:dojo_event_service, dojo_id: @d1.id, name: :connpass, group_id: 9876)
13+
@es2 = create(:dojo_event_service, dojo_id: @d2.id, name: :doorkeeper, group_id: 5555)
1414
end
1515

1616
it 'プロバイダ指定なし' do
@@ -26,11 +26,11 @@
2626
end
2727

2828
it '昨日分までは削除' do
29-
create(:upcoming_event, dojo_id: @d1.id, service_name: 'connpass', event_id: '1111', event_at: "#{Time.zone.today - 3.days} 13:00:00".in_time_zone)
30-
create(:upcoming_event, dojo_id: @d1.id, service_name: 'connpass', event_id: '2222', event_at: "#{Time.zone.today - 2.days} 14:00:00".in_time_zone)
31-
create(:upcoming_event, dojo_id: @d1.id, service_name: 'connpass', event_id: '3333', event_at: "#{Time.zone.today - 1.days} 15:00:00".in_time_zone)
32-
create(:upcoming_event, dojo_id: @d2.id, service_name: 'doorkeeper', event_id: '4444', event_at: "#{Time.zone.today - 2.days} 10:00:00".in_time_zone)
33-
create(:upcoming_event, dojo_id: @d2.id, service_name: 'doorkeeper', event_id: '5555', event_at: "#{Time.zone.today - 1.days} 11:00:00".in_time_zone)
29+
create(:upcoming_event, dojo_event_service_id: @es1.id, service_name: 'connpass', event_id: '1111', event_at: "#{Time.zone.today - 3.days} 13:00:00".in_time_zone)
30+
create(:upcoming_event, dojo_event_service_id: @es1.id, service_name: 'connpass', event_id: '2222', event_at: "#{Time.zone.today - 2.days} 14:00:00".in_time_zone)
31+
create(:upcoming_event, dojo_event_service_id: @es1.id, service_name: 'connpass', event_id: '3333', event_at: "#{Time.zone.today - 1.days} 15:00:00".in_time_zone)
32+
create(:upcoming_event, dojo_event_service_id: @es2.id, service_name: 'doorkeeper', event_id: '4444', event_at: "#{Time.zone.today - 2.days} 10:00:00".in_time_zone)
33+
create(:upcoming_event, dojo_event_service_id: @es2.id, service_name: 'doorkeeper', event_id: '5555', event_at: "#{Time.zone.today - 1.days} 11:00:00".in_time_zone)
3434

3535
expect{ UpcomingEvents::Aggregation.new({}).run }.to change{ UpcomingEvent.count }.from(5).to(3)
3636
end

0 commit comments

Comments
 (0)