Sha256: 1fe3753c321bd9a725f75aa93157edb2cb848197c27fcc39b5a999e3cab59c46

Contents?: true

Size: 694 Bytes

Versions: 4

Compression:

Stored size: 694 Bytes

Contents

# frozen_string_literal: true

module SolidusGraphqlApi
  module Queries
    class ProductsQuery
      attr_reader :user, :pricing_options

      def initialize(user:, pricing_options:)
        @user = user
        @pricing_options = pricing_options
      end

      def call(query: {})
        Spree::Config.searcher_class.new(build_query(query)).tap do |searcher|
          searcher.current_user = user
          searcher.pricing_options = pricing_options
        end.retrieve_products.except(:limit, :offset)
      end

      private

      def build_query(query)
        query.to_h.tap do |q|
          q[:taxon] = q[:taxon].id unless q[:taxon].nil?
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_graphql_api-0.3.1 lib/solidus_graphql_api/queries/products_query.rb
solidus_graphql_api-0.3.0 lib/solidus_graphql_api/queries/products_query.rb
solidus_graphql_api-0.2.0 lib/solidus_graphql_api/queries/products_query.rb
solidus_graphql_api-0.1.0 lib/solidus_graphql_api/queries/products_query.rb