lib/wcc/contentful/model_builder.rb in wcc-contentful-0.1.0 vs lib/wcc/contentful/model_builder.rb in wcc-contentful-0.2.0
- old
+ new
@@ -38,24 +38,34 @@
define_singleton_method(:find) do |id, context = nil|
raw = WCC::Contentful::Model.store.find(id)
new(raw, context) if raw.present?
end
- define_singleton_method(:find_all) do |context = nil|
- raw = WCC::Contentful::Model.store.find_by(content_type: content_type)
- raw.map { |r| new(r, context) }
+ define_singleton_method(:find_all) do |filter = nil, context = nil|
+ if filter
+ filter.transform_keys! { |k| k.to_s.camelize(:lower) }
+ bad_fields = filter.keys.reject { |k| fields.include?(k) }
+ raise ArgumentError, "These fields do not exist: #{bad_fields}" unless bad_fields.empty?
+ end
+
+ query = WCC::Contentful::Model.store.find_all(content_type: content_type)
+ query = query.apply(filter) if filter
+ query.map { |r| new(r, context) }
end
define_singleton_method(:find_by) do |filter, context = nil|
filter.transform_keys! { |k| k.to_s.camelize(:lower) }
bad_fields = filter.keys.reject { |k| fields.include?(k) }
raise ArgumentError, "These fields do not exist: #{bad_fields}" unless bad_fields.empty?
- query = WCC::Contentful::Model.store.find_by(content_type: content_type)
- filter.each do |field, v|
- query = query.eq(field, v, context)
- end
- query.map { |r| new(r, context) }
+ result = WCC::Contentful::Model.store.find_by(content_type: content_type, filter: filter)
+ new(result, context)
+ end
+
+ define_singleton_method(:inherited) do |subclass|
+ # only register if it's not already registered
+ return if WCC::Contentful::Model.registered?(typedef.content_type)
+ WCC::Contentful::Model.register_for_content_type(typedef.content_type, klass: subclass)
end
define_method(:initialize) do |raw, context = nil|
ct = content_type_from_raw(raw)
if ct != typedef.content_type