Skip to content

Commit

Permalink
refactor: rename PactBroker::Repository::Helpers to PactBroker::Dataset
Browse files Browse the repository at this point in the history
  • Loading branch information
bethesque committed Jun 15, 2023
1 parent ed24131 commit 4f11e3d
Show file tree
Hide file tree
Showing 39 changed files with 152 additions and 195 deletions.
84 changes: 84 additions & 0 deletions lib/pact_broker/dataset.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
require "sequel"
require "pact_broker/dataset/page"

Sequel.extension :escaped_like

module PactBroker
module Dataset
def name_like column_name, value
if PactBroker.configuration.use_case_sensitive_resource_names
if mysql?
# sigh, mysql, this is the only way to perform a case sensitive search
Sequel.like(column_name, value.gsub("_", "\\_"), { case_insensitive: false })
else
{ column_name => value }
end
else
Sequel.like(column_name, value.gsub("_", "\\_"), { case_insensitive: true })
end
end

def select_all_qualified
select(Sequel[model.table_name].*)
end

def all_with_pagination_options(pagination_options)
if pagination_options&.any?
query = paginate(pagination_options[:page_number], pagination_options[:page_size])
Page.new(query.all, query)
else
all
end
end

def all_forbidding_lazy_load
all.each{ | row | row.forbid_lazy_load if row.respond_to?(:forbid_lazy_load) }
end

def all_allowing_lazy_load
all.each{ | row | row.allow_lazy_load if row.respond_to?(:allow_lazy_load) }
end

# @param [Symbol] max_column the name of the column of which to calculate the maxiumum
# @param [Array<Symbol>] group_by_columns the names of the columns by which to group
def max_group_by(max_column, group_by_columns, &extra_criteria_block)
maximums_base_query = extra_criteria_block ? extra_criteria_block.call(self) : self
maximums = maximums_base_query.select_group(*group_by_columns).select_append(Sequel.function(:max, max_column).as(:max_value))

max_join = group_by_columns.each_with_object({ Sequel[:maximums][:max_value] => max_column }) do | column_name, joins |
joins[Sequel[:maximums][column_name]] = column_name
end

join(maximums, max_join, table_alias: :maximums)
end

def select_for_subquery column
if mysql? #stoopid mysql doesn't allow you to modify datasets with subqueries
column_name = column.respond_to?(:alias) ? column.alias : column
select(column).collect{ | it | it[column_name] }
else
select(column)
end
end

def no_columns_selected?
opts[:select].nil?
end

def order_ignore_case column_name = :name
order(Sequel.function(:lower, column_name))
end

def order_append_ignore_case column_name = :name
order_append(Sequel.function(:lower, column_name))
end

def mysql?
Sequel::Model.db.adapter_scheme.to_s =~ /mysql/
end

def postgres?
Sequel::Model.db.adapter_scheme.to_s =~ /postgres/
end
end
end
22 changes: 22 additions & 0 deletions lib/pact_broker/dataset/page.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
require "forwardable"

# An array that provides the pagination details

module PactBroker
module Dataset
class Page < Array
extend Forwardable

attr_reader :query

PAGE_PROPERTIES = [:page_size, :page_count, :page_range, :current_page, :next_page, :prev_page, :first_page?, :last_page?, :pagination_record_count, :current_page_record_count, :current_page_record_range]

delegate PAGE_PROPERTIES => :query

def initialize(array, query)
super(array)
@query = query
end
end
end
end
7 changes: 2 additions & 5 deletions lib/pact_broker/deployments/currently_deployed_version_id.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require "sequel"
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"

module PactBroker
module Deployments
Expand All @@ -8,9 +7,7 @@ class CurrentlyDeployedVersionId < Sequel::Model

plugin :upsert, identifying_columns: [:pacticipant_id, :environment_id, :target_for_index]

dataset_module do
include PactBroker::Repositories::Helpers
end
dataset_module(PactBroker::Dataset)
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions lib/pact_broker/deployments/deployed_version.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"
require "pact_broker/deployments/currently_deployed_version_id"

module PactBroker
Expand All @@ -15,7 +15,7 @@ class DeployedVersion < Sequel::Model
plugin :insert_ignore, identifying_columns: [:pacticipant_id, :version_id, :environment_id, :target_for_index]

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

def user_created
where(auto_created: false)
Expand Down
2 changes: 0 additions & 2 deletions lib/pact_broker/deployments/environment.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
require "sequel"
require "sequel/plugins/serialization"


module PactBroker
module Deployments
class Environment < Sequel::Model
Expand Down
5 changes: 2 additions & 3 deletions lib/pact_broker/deployments/released_version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require "sequel"
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"

module PactBroker
module Deployments
Expand All @@ -14,7 +13,7 @@ class ReleasedVersion < Sequel::Model
plugin :insert_ignore, identifying_columns: [:version_id, :environment_id]

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

def currently_supported
where(support_ended_at: nil)
Expand Down
6 changes: 2 additions & 4 deletions lib/pact_broker/domain/label.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
require "pact_broker/db"

module PactBroker
module Domain
class Label < Sequel::Model
set_primary_key([:name, :pacticipant_id])
unrestrict_primary_key

plugin :timestamps, update_on_create: true

associate(:many_to_one, :pacticipant, :class => "PactBroker::Domain::Pacticipant", :key => :pacticipant_id, :primary_key => :id)

def <=> other
name <=> other.name
end

end

Label.plugin :timestamps, update_on_create: true
end
end

Expand Down
1 change: 0 additions & 1 deletion lib/pact_broker/domain/pact.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require "pact_broker/db"
require "pact_broker/json"
require "pact_broker/pacts/content"

Expand Down
5 changes: 2 additions & 3 deletions lib/pact_broker/domain/pacticipant.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
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"
Expand Down Expand Up @@ -32,7 +31,7 @@ class Pacticipant < Sequel::Model
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)
Expand Down
5 changes: 2 additions & 3 deletions lib/pact_broker/domain/tag.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require "pact_broker/db"
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"
require "pact_broker/tags/eager_loaders"

module PactBroker
Expand All @@ -24,7 +23,7 @@ class Tag < Sequel::Model
eager_loader: PactBroker::Tags::EagerLoaders::HeadTag

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

def join_pact_publications
join(:pact_publications, { Sequel[:tags][:version_id] => Sequel[:pact_publications][:consumer_version_id] } )
Expand Down
5 changes: 2 additions & 3 deletions lib/pact_broker/domain/verification.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
require "pact_broker/dataset"
require "json"
require "sequel"
require "pact_broker/repositories/helpers"
require "pact_broker/tags/tag_with_latest_flag"
require "pact_broker/pacts/content"
require "sequel/extensions/symbol_aref_refinement"
Expand All @@ -27,7 +26,7 @@ def before_create
end

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

def for_provider_name(provider_name)
where(provider: PactBroker::Domain::Pacticipant.find_by_name(provider_name))
Expand Down
5 changes: 2 additions & 3 deletions lib/pact_broker/domain/version.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
require "pact_broker/db"
require "pact_broker/dataset"
require "pact_broker/domain/order_versions"
require "pact_broker/repositories/helpers"
require "pact_broker/tags/tag_with_latest_flag"
require "pact_broker/versions/eager_loaders"

Expand Down Expand Up @@ -51,7 +50,7 @@ class Version < Sequel::Model(Sequel::Model.db[:versions].select(*VERSION_COLUMN
eager_loader: PactBroker::Versions::EagerLoaders::LatestVersionForPacticipant

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

def with_branch
where(id: PactBroker::Versions::BranchVersion.select(:version_id))
Expand Down
1 change: 0 additions & 1 deletion lib/pact_broker/integrations/integration.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require "pact_broker/db"
require "pact_broker/verifications/pseudo_branch_status"
require "pact_broker/domain/verification"
require "pact_broker/webhooks/latest_triggered_webhook"
Expand Down
6 changes: 2 additions & 4 deletions lib/pact_broker/matrix/quick_row.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"
require "pact_broker/matrix/query_builder"
require "sequel"
require "pact_broker/repositories/helpers"
require "pact_broker/logging"
require "pact_broker/pacts/pact_version"
require "pact_broker/domain/pacticipant"
Expand Down Expand Up @@ -85,7 +83,7 @@ class QuickRow < Sequel::Model(Sequel.as(:latest_pact_publication_ids_for_consum
associate(:one_to_many, :provider_version_tags, :class => "PactBroker::Tags::TagWithLatestFlag", primary_key: :provider_version_id, key: :version_id)

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

select(*SELECT_ALL_COLUMN_ARGS)
select(*SELECT_PACTICIPANT_IDS_ARGS)
Expand Down
1 change: 0 additions & 1 deletion lib/pact_broker/pacticipants/repository.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require "sequel"
require "pact_broker/domain/pacticipant"
require "pact_broker/repositories/helpers"
require "pact_broker/error"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"

module PactBroker
module Pacts
Expand All @@ -7,9 +7,7 @@ class LatestPactPublicationIdForConsumerVersion < Sequel::Model(:latest_pact_pub
unrestrict_primary_key
plugin :upsert, identifying_columns: [:provider_id, :consumer_version_id]

dataset_module do
include PactBroker::Repositories::Helpers
end
dataset_module PactBroker::Dataset
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions lib/pact_broker/pacts/pact_publication.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require "forwardable"
require "pact_broker/dataset"
require "pact_broker/domain/pact"
require "pact_broker/pacts/pact_version"
require "pact_broker/repositories/helpers"
require "pact_broker/integrations/integration"
require "pact_broker/tags/head_pact_tags"
require "pact_broker/pacts/pact_publication_dataset_module"
Expand Down Expand Up @@ -52,7 +52,7 @@ class PactPublication < Sequel::Model(:pact_publications)
plugin :timestamps, update_on_create: true

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset
include PactPublicationDatasetModule
include PactPublicationCleanSelectorDatasetModule
include PactPublicationWipDatasetModule
Expand Down
5 changes: 2 additions & 3 deletions lib/pact_broker/pacts/pact_version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require "sequel"
require "pact_broker/repositories/helpers"
require "pact_broker/dataset"
require "pact_broker/pacts/content"
require "pact_broker/pacts/pact_version_association_loaders"

Expand Down Expand Up @@ -52,7 +51,7 @@ class PactVersion < Sequel::Model(:pact_versions)
)

dataset_module do
include PactBroker::Repositories::Helpers
include PactBroker::Dataset

def for_pact_domain(pact_domain)
where(
Expand Down
1 change: 0 additions & 1 deletion lib/pact_broker/pacts/pacts_for_verification_repository.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require "sequel"
require "pact_broker/logging"
require "pact_broker/pacts/pact_publication"
require "pact_broker/domain"
Expand Down
1 change: 0 additions & 1 deletion lib/pact_broker/pacts/repository.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require "sequel"
require "ostruct"
require "pact_broker/logging"
require "pact_broker/pacts/generate_sha"
Expand Down
Loading

0 comments on commit 4f11e3d

Please sign in to comment.