diff --git a/.rubocop_fixme.yml b/.rubocop_fixme.yml index 1d6063fb0b..c081d82484 100644 --- a/.rubocop_fixme.yml +++ b/.rubocop_fixme.yml @@ -159,7 +159,6 @@ RSpec/LetBeforeExamples: - 'spec/forms/hyrax/forms/collection_form_spec.rb' - 'spec/presenters/hyrax/collection_presenter_spec.rb' - 'spec/presenters/hyrax/trophy_presenter_spec.rb' - - 'spec/services/hyrax/query_service_spec.rb' - 'spec/services/hyrax/workflow/action_taken_service_spec.rb' - 'spec/services/hyrax/workflow/notification_service_spec.rb' diff --git a/app/services/hyrax/query_service.rb b/app/services/hyrax/query_service.rb deleted file mode 100644 index 28c2c9be10..0000000000 --- a/app/services/hyrax/query_service.rb +++ /dev/null @@ -1,53 +0,0 @@ -module Hyrax - class QueryService - # query to find works created during the time range - # @param [DateTime] start_datetime starting date time for range query - # @param [DateTime] end_datetime ending date time for range query - def find_by_date_created(start_datetime, end_datetime = nil) - return [] if start_datetime.blank? # no date just return nothing - relation.where(build_date_query(start_datetime, end_datetime)) - end - - def find_registered_in_date_range(start_datetime, end_datetime = nil) - find_by_date_created(start_datetime, end_datetime).merge(where_registered) - end - - def find_public_in_date_range(start_datetime, end_datetime = nil) - find_by_date_created(start_datetime, end_datetime).merge(where_public) - end - - def where_public - where_access_is 'public' - end - - def where_registered - where_access_is 'registered' - end - - def build_date_query(start_datetime, end_datetime) - start_date_str = start_datetime.utc.strftime(date_format) - end_date_str = if end_datetime.blank? - "*" - else - end_datetime.utc.strftime(date_format) - end - "system_create_dtsi:[#{start_date_str} TO #{end_date_str}]" - end - - delegate :count, to: :relation - - def relation - Hyrax::WorkRelation.new - end - - private - - def where_access_is(access_level) - relation.where Hydra.config.permissions.read.group => access_level - end - - def date_format - "%Y-%m-%dT%H:%M:%SZ" - end - end -end diff --git a/app/services/hyrax/statistics/depositors/summary.rb b/app/services/hyrax/statistics/depositors/summary.rb index c0853188c0..dc5ea8ee4f 100644 --- a/app/services/hyrax/statistics/depositors/summary.rb +++ b/app/services/hyrax/statistics/depositors/summary.rb @@ -55,7 +55,11 @@ def query end def date_query - Hyrax::QueryService.new.build_date_query(start_dt, end_dt) if start_dt.present? + query_service.build_date_query(start_dt, end_dt) if start_dt.present? + end + + def query_service + Hyrax::Statistics::QueryService.new end end end diff --git a/app/services/hyrax/statistics/over_time.rb b/app/services/hyrax/statistics/over_time.rb index fe56b45c3d..f280c630dc 100644 --- a/app/services/hyrax/statistics/over_time.rb +++ b/app/services/hyrax/statistics/over_time.rb @@ -35,7 +35,11 @@ def point(min, max) end def query(min, max) - QueryService.new.build_date_query(min, max) + query_service.build_date_query(min, max) + end + + def query_service + Hyrax::Statistics::QueryService.new end # How many points are in this data set diff --git a/app/services/hyrax/statistics/query_service.rb b/app/services/hyrax/statistics/query_service.rb new file mode 100644 index 0000000000..56aef7725f --- /dev/null +++ b/app/services/hyrax/statistics/query_service.rb @@ -0,0 +1,55 @@ +module Hyrax + module Statistics + class QueryService + # query to find works created during the time range + # @param [DateTime] start_datetime starting date time for range query + # @param [DateTime] end_datetime ending date time for range query + def find_by_date_created(start_datetime, end_datetime = nil) + return [] if start_datetime.blank? # no date just return nothing + relation.where(build_date_query(start_datetime, end_datetime)) + end + + def find_registered_in_date_range(start_datetime, end_datetime = nil) + find_by_date_created(start_datetime, end_datetime).merge(where_registered) + end + + def find_public_in_date_range(start_datetime, end_datetime = nil) + find_by_date_created(start_datetime, end_datetime).merge(where_public) + end + + def where_public + where_access_is 'public' + end + + def where_registered + where_access_is 'registered' + end + + def build_date_query(start_datetime, end_datetime) + start_date_str = start_datetime.utc.strftime(date_format) + end_date_str = if end_datetime.blank? + "*" + else + end_datetime.utc.strftime(date_format) + end + "system_create_dtsi:[#{start_date_str} TO #{end_date_str}]" + end + + delegate :count, to: :relation + + def relation + Hyrax::WorkRelation.new + end + + private + + def where_access_is(access_level) + relation.where Hydra.config.permissions.read.group => access_level + end + + def date_format + "%Y-%m-%dT%H:%M:%SZ" + end + end + end +end diff --git a/app/services/hyrax/statistics/works/count.rb b/app/services/hyrax/statistics/works/count.rb index b07ad7b08a..7e752c4257 100644 --- a/app/services/hyrax/statistics/works/count.rb +++ b/app/services/hyrax/statistics/works/count.rb @@ -43,7 +43,7 @@ def by_permission private def query_service - @query_service ||= Hyrax::QueryService.new + @query_service ||= Hyrax::Statistics::QueryService.new end def by_date_and_permission diff --git a/spec/services/hyrax/query_service_spec.rb b/spec/services/hyrax/statistics/query_service_spec.rb similarity index 97% rename from spec/services/hyrax/query_service_spec.rb rename to spec/services/hyrax/statistics/query_service_spec.rb index 1e11a3a152..32c07bcc9b 100644 --- a/spec/services/hyrax/query_service_spec.rb +++ b/spec/services/hyrax/statistics/query_service_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe Hyrax::QueryService, :clean_repo do +RSpec.describe Hyrax::Statistics::QueryService, :clean_repo do let(:service) { described_class.new } describe "#count" do @@ -54,8 +54,9 @@ end context "when file is registered" do - it { is_expected.to eq [work] } let(:read_groups) { ["registered"] } + + it { is_expected.to eq [work] } end end @@ -77,8 +78,9 @@ end context "when file is registered" do - it { is_expected.to eq [] } let(:read_groups) { ["registered"] } + + it { is_expected.to eq [] } end end