Sha256: 16c0224150bfc3298e1ad07312e9d819a48b7e05d315d12e31460a2ca5bc994c
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true module WCC::Contentful::Store class CDNAdapter attr_reader :client # Intentionally not implementing write methods def initialize(client) super() @client = client end def find(key) entry = begin client.entry(key, locale: '*') rescue WCC::Contentful::SimpleClient::NotFoundError client.asset(key, locale: '*') end entry&.raw rescue WCC::Contentful::SimpleClient::NotFoundError nil end def find_by(content_type:, filter: nil) # default implementation - can be overridden q = find_all(content_type: content_type) q = q.apply(filter) if filter q.first end def find_all(content_type:) Query.new(@client, content_type: content_type) end class Query < Base::Query delegate :count, to: :resolve def result resolve.items end def initialize(client, relation) raise ArgumentError, 'Client cannot be nil' unless client.present? raise ArgumentError, 'content_type must be provided' unless relation[:content_type].present? @client = client @relation = relation end def eq(field, expected, context = nil) locale = context[:locale] if context.present? locale ||= 'en-US' Query.new(@client, @relation.merge("fields.#{field}.#{locale}" => expected)) end private def resolve return @resolve if @resolve @resolve ||= if @relation[:content_type] == 'Asset' @client.assets( { locale: '*' }.merge!(@relation.reject { |k| k == :content_type }) ) else @client.entries({ locale: '*' }.merge!(@relation)) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
wcc-contentful-0.2.2 | lib/wcc/contentful/store/cdn_adapter.rb |
wcc-contentful-0.2.1 | lib/wcc/contentful/store/cdn_adapter.rb |
wcc-contentful-0.2.0 | lib/wcc/contentful/store/cdn_adapter.rb |