Skip to content

Commit

Permalink
Refactor *_update_metrics @db handle
Browse files Browse the repository at this point in the history
Call update_owner_metrics on owner creation
  • Loading branch information
straight-shoota committed May 6, 2020
1 parent 386d524 commit 40de608
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 28 deletions.
4 changes: 2 additions & 2 deletions spec/service/update_owner_metrics_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ describe Service::UpdateOwnerMetrics do
owner_id = Factory.create_owner(db, "me")
Factory.set_owner(db, owner_id, [myshard1_repo_id, myshard2_repo_id])

service = Service::UpdateOwnerMetrics.new
service.perform(db)
service = Service::UpdateOwnerMetrics.new(db)
service.perform

results = db.connection.query_all <<-SQL, as: {Int64, Int32, Int32, Int32, Int32, Int32, Int32, Int32}
SELECT
Expand Down
4 changes: 2 additions & 2 deletions spec/service/update_shard_metrics_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ describe Service::UpdateShardMetrics do
puts notice
end

service = Service::UpdateShardMetrics.new
service.perform(db)
service = Service::UpdateShardMetrics.new(db)
service.perform
end
end
end
2 changes: 2 additions & 0 deletions src/service/create_owner.cr
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require "../repo/owner"
require "../fetchers/github_api"
require "./update_owner_metrics"

struct Service::CreateOwner
property github_api : Shardbox::GitHubAPI { Shardbox::GitHubAPI.new }
Expand All @@ -21,6 +22,7 @@ struct Service::CreateOwner
# owner does not yet exist, need to insert a new entry
fetch_owner_info(owner)
owner.id = @db.create_owner(owner)
UpdateOwnerMetrics.new(@db).update_owner_metrics(owner.id)
end

assign_owner(owner)
Expand Down
16 changes: 5 additions & 11 deletions src/service/update_owner_metrics.cr
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
require "../db"

struct Service::UpdateOwnerMetrics
def initialize
def initialize(@db : ShardsDB)
end

def perform
ShardsDB.transaction do |db|
perform(db)
end
end

def perform(db)
owner_ids = db.connection.query_all <<-SQL, as: Int64
owner_ids = @db.connection.query_all <<-SQL, as: Int64
SELECT
id
FROM
owners
SQL
owner_ids.each do |id|
update_owner_metrics(db, id)
update_owner_metrics(id)
end
end

def update_owner_metrics(db, id)
db.connection.exec <<-SQL, id
def update_owner_metrics(id)
@db.connection.exec <<-SQL, id
SELECT owner_metrics_calculate($1)
SQL
end
Expand Down
16 changes: 5 additions & 11 deletions src/service/update_shard_metrics.cr
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
require "../db"

struct Service::UpdateShardMetrics
def initialize
def initialize(@db : ShardsDB)
end

def perform
ShardsDB.transaction do |db|
perform(db)
end
end

def perform(db)
shard_ids = db.connection.query_all <<-SQL, as: Int64
shard_ids = @db.connection.query_all <<-SQL, as: Int64
SELECT
id
FROM
shards
SQL
shard_ids.each do |id|
update_shard_metrics(db, id)
update_shard_metrics(id)
end
end

def update_shard_metrics(db, id)
db.connection.exec <<-SQL, id
def update_shard_metrics(id)
@db.connection.exec <<-SQL, id
SELECT shard_metrics_calculate($1)
SQL
end
Expand Down
6 changes: 4 additions & 2 deletions src/worker.cr
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,10 @@ when "sync_repo"

sync_all_pending_repos
when "update_metrics"
Service::UpdateShardMetrics.new.perform
Service::UpdateOwnerMetrics.new.perform
ShardsDB.transaction do |db|
Service::UpdateShardMetrics.new(db).perform
Service::UpdateOwnerMetrics.new(db).perform
end
when "loop"
Service::WorkerLoop.new.perform
else
Expand Down

0 comments on commit 40de608

Please sign in to comment.