Sha256: 29dd0f6dc732bf6d610b69fd2fcd20dba30d53f9528182abf3cafb3860e11ba7

Contents?: true

Size: 1.34 KB

Versions: 29

Compression:

Stored size: 1.34 KB

Contents

module Spree
  module Api
    module V2
      class BaseSerializer
        include JSONAPI::Serializer

        # to learn more about caching, please refer to:
        # https://github.com/jsonapi-serializer/jsonapi-serializer#caching
        # https://guides.rubyonrails.org/caching_with_rails.html#low-level-caching
        cache_options(store: Rails.cache, namespace: 'jsonapi-serializer', expires_in: Spree::Api::Config[:api_v2_serializers_cache_ttl])

        def self.record_cache_options(options, fieldset, include_list, params)
          opts = options.dup

          params_cache_key = params.map do |param|
            value = param.last
            next if param.nil? || value.nil?

            if value.respond_to?(:cache_key_with_version)
              value.cache_key_with_version
            elsif value.is_a?(Hash)
              # covers the current_price_options cases:
              #     { price_options: { tax_zone: Spree::Zone... } } or
              #     { price_options: { tax_zone: nil } }
              only_key = value.keys.first
              value[only_key]&.cache_key_with_version
            else
              value.to_s.downcase
            end
          end.compact.reject(&:blank?).join('-')

          opts[:namespace] += "-#{params_cache_key}"

          super(opts, fieldset, include_list, params)
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 3 rubygems

Version Path
spree_api-4.10.1 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.10.0 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.9.0 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.8.3 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.8.2 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.7.3 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.6 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.5.5 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.4.1 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.5.4 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.5 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.7.2 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.7.1 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.4 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.7.0 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.3 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.2 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.1 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.6.0 app/serializers/spree/api/v2/base_serializer.rb
spree_api-4.5.3 app/serializers/spree/api/v2/base_serializer.rb