Sha256: 9e46e37beb885e2024b9a822292761b829cd17c96183454d2ee3c027423eacfb

Contents?: true

Size: 1.69 KB

Versions: 2

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

module Sourcescrub
  # Utilities
  module Utils
    # All Searches Parameters
    module SearchParams
      module_function

      def source_params(args = {})
        recursive_compact(build_args(args))
      end

      private

      def build_args(args)
        {
          'filters' => {
            'startDateRange' => {
              'from' => args.dig(:start_date, :from),
              'to' => args.dig(:start_date, :to)
            },
            'endDateRange' => {
              'from' => args.dig(:end_date, :from),
              'to' => args.dig(:end_date, :to)
            },
            'modifiedDateRange' => {
              'from' => args.dig(:modified, :from),
              'to' => args.dig(:modified, :to)
            },
            'completedAtDateRange' => {
              'from' => args.dig(:completed_date, :from),
              'to' => args.dig(:completed_date, :to)
            },
            'industries' => args.dig(:industries),
            'statuses' => args.dig(:statuses),
            'sourceTypes' => args.dig(:source_types),
            'clientStatuses' => args.dig(:client_statuses),
            'completedAt' => args.dig(:completed_at)
          },
          'searchText' => args.dig(:search_text),
          'limit' => args.dig(:limit) || 100,
          'offset' => args.dig(:offset) || 0,
          'orderBy' => args.dig(:order_by) || 'endDate DESC'
        }
      end

      def recursive_compact(hash_or_array)
        block = proc do |*args|
          v = args.last
          v.delete_if(&block) if v.respond_to? :delete_if
          v.nil? || v.respond_to?(:"empty?") && v.empty?
        end

        hash_or_array.delete_if(&block)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sourcescrub-0.1.3 lib/sourcescrub/utils/search_params.rb
sourcescrub-0.1.2 lib/sourcescrub/utils/search_params.rb