module Pina::Resource
Public Instance Methods
paginate(options = {})
click to toggle source
# File lib/pina/resource.rb, line 3 def paginate(options = {}) @per_page = options.fetch(:per_page) end
per_page()
click to toggle source
# File lib/pina/resource.rb, line 18 def per_page @per_page || ::Pina.configuration.default_per_page end
resource_methods(*methods)
click to toggle source
# File lib/pina/resource.rb, line 7 def resource_methods(*methods) methods.each do |method| next unless method method_name = "define_#{method}".to_sym next unless respond_to?(method_name, true) send(method_name) end end
Private Instance Methods
attributes(response)
click to toggle source
# File lib/pina/resource.rb, line 100 def attributes(response) response.to_hash.merge(response: response) end
collection()
click to toggle source
# File lib/pina/resource.rb, line 92 def collection Object.const_get("Pina::Collections::#{resource_name}") end
define_all()
click to toggle source
# File lib/pina/resource.rb, line 32 def define_all define_singleton_method(:all) do |params = {}| params[:per_page] = per_page if per_page response = Pina::RestAdapter.get(resource_path, params) return collection.new(attributes(response)) if response.ok? response end end
define_create()
click to toggle source
# File lib/pina/resource.rb, line 54 def define_create define_singleton_method(:create) do |entity| response = Pina::RestAdapter.post(resource_path, entity) return model.new(attributes(response)) if response.ok? response end end
define_delete()
click to toggle source
# File lib/pina/resource.rb, line 74 def define_delete define_singleton_method(:delete) do |id| response = Pina::RestAdapter.delete(resource_path, id) return model.new(attributes(response)) if response.ok? response end end
define_find()
click to toggle source
# File lib/pina/resource.rb, line 44 def define_find define_singleton_method(:find) do |id| response = Pina::RestAdapter.get(resource_path, id) return model.new(attributes(response)) if response.ok? response end end
define_update()
click to toggle source
# File lib/pina/resource.rb, line 64 def define_update define_singleton_method(:update) do |id, entity| response = Pina::RestAdapter.patch(resource_path, id, entity) return model.new(attributes(response)) if response.ok? response end end
define_where()
click to toggle source
# File lib/pina/resource.rb, line 24 def define_where define_all unless respond_to?(:all) singleton_class.class_eval do alias_method :where, :all end end
model()
click to toggle source
# File lib/pina/resource.rb, line 96 def model Object.const_get("Pina::Models::#{resource_name}") end
resource_name()
click to toggle source
# File lib/pina/resource.rb, line 84 def resource_name name.demodulize end
resource_path()
click to toggle source
# File lib/pina/resource.rb, line 88 def resource_path resource_name.underscore.pluralize end