lib/pact_broker/domain/pacticipant.rb in pact_broker-2.107.1 vs lib/pact_broker/domain/pacticipant.rb in pact_broker-2.108.0
- old
+ new
@@ -1,44 +1,14 @@
-require "pact_broker/db"
+require "pact_broker/dataset"
require "pact_broker/messages"
-require "pact_broker/repositories/helpers"
require "pact_broker/domain/label"
require "pact_broker/string_refinements"
require "pact_broker/pacticipants/generate_display_name"
+require "pact_broker/pacticipants/latest_version_for_pacticipant_eager_loader"
module PactBroker
module Domain
- class LatestVersionForPacticipantEagerLoader
- def self.call(eo, **_other)
- populate_associations(eo[:rows])
- end
-
- def self.populate_associations(pacticipants)
- pacticipants.each { | pacticipant | pacticipant.associations[:latest_version] = nil }
- pacticipant_ids = pacticipants.collect(&:id)
-
- max_orders = PactBroker::Domain::Version
- .where(pacticipant_id: pacticipant_ids)
- .select_group(:pacticipant_id)
- .select_append { max(order).as(latest_order) }
-
- max_orders_join = {
- Sequel[:max_orders][:latest_order] => Sequel[:versions][:order],
- Sequel[:max_orders][:pacticipant_id] => Sequel[:versions][:pacticipant_id]
- }
-
- latest_versions = PactBroker::Domain::Version
- .select_all_qualified
- .join(max_orders, max_orders_join, { table_alias: :max_orders})
-
- latest_versions.each do | version |
- pacticipant = pacticipants.find{ | p | p.id == version.pacticipant_id }
- pacticipant.associations[:latest_version] = version
- end
- end
- end
-
class Pacticipant < Sequel::Model
include Messages
include PactBroker::Pacticipants::GenerateDisplayName
using PactBroker::StringRefinements
@@ -53,16 +23,16 @@
one_to_many :labels, :order => :name, :reciprocal => :pacticipant
one_to_many :pacts
one_to_one :latest_version, :class => "PactBroker::Domain::Version",
primary_key: :id, key: :pacticipant_id,
dataset: lambda { PactBroker::Domain::Version.where(pacticipant_id: id).order(Sequel.desc(:order)).limit(1) },
- eager_loader: LatestVersionForPacticipantEagerLoader
+ eager_loader: PactBroker::Pacticipants::LatestVersionForPacticipantEagerLoader
one_to_many :branch_heads, class: "PactBroker::Versions::BranchHead", primary_key: :id, key: :pacticipant_id
one_to_many :branches, class: "PactBroker::Versions::Branch", primary_key: :id, key: :pacticipant_id
dataset_module do
- include PactBroker::Repositories::Helpers
+ include PactBroker::Dataset
def with_main_branch_set
exclude(main_branch: nil)
end