Sha256: 107724e9d20134e70f4e1e98740cb539f965b26ae3e7d3b03dce0c4914dcfc72

Contents?: true

Size: 1.7 KB

Versions: 5

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true
module Hyrax
  module CustomQueries
    ##
    # @see https://github.com/samvera/valkyrie/wiki/Queries#custom-queries
    class FindByDateRange
      def self.queries
        [:find_by_date_range]
      end

      def initialize(query_service:)
        @query_service = query_service
      end

      attr_reader :query_service
      delegate :resource_factory, to: :query_service
      delegate :orm_class, to: :resource_factory

      ##
      # @note this is an unoptimized default implementation of this custom
      #   query. it's Hyrax's policy to provide such implementations of custom
      #   queries in use for cross-compatibility of Valkyrie query services.
      #   it's advisable to provide an optimized query for the specific adapter.
      #
      # @param models [Array]
      # @param start_datetime [DateTime]
      # @param end_datetime [DateTime]
      def find_by_date_range(start_datetime:, end_datetime: nil, models: nil)
        end_datetime = 1.second.since(Time.zone.now) if end_datetime.blank?
        if models.present?
          query_service.run_query(find_models_by_date_range_query, start_datetime.to_s, end_datetime.to_s, models)
        else
          query_service.run_query(find_by_date_range_query, start_datetime.to_s, end_datetime.to_s)
        end
      end

      def find_models_by_date_range_query
        <<-SQL
          SELECT * FROM orm_resources
          WHERE created_at >= ?
          AND created_at <= ?
          AND internal_resource IN (?);
        SQL
      end

      def find_by_date_range_query
        <<-SQL
          SELECT * FROM orm_resources
          WHERE created_at >= ?
          AND created_at <= ?;
        SQL
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
hyrax-5.0.1 app/services/hyrax/custom_queries/find_by_date_range.rb
hyrax-5.0.0 app/services/hyrax/custom_queries/find_by_date_range.rb
hyrax-5.0.0.rc3 app/services/hyrax/custom_queries/find_by_date_range.rb
hyrax-5.0.0.rc2 app/services/hyrax/custom_queries/find_by_date_range.rb
hyrax-5.0.0.rc1 app/services/hyrax/custom_queries/find_by_date_range.rb