module APIQL::CRUD
Public Instance Methods
model(klass)
click to toggle source
# File lib/apiql.rb, line 18 def model(klass) define_method "#{klass.name.pluralize.underscore}" do |page = nil, page_size = 10| authorize! :read, klass if page.present? { total: klass.count, items: klass.eager_load(eager_load).offset(page * page_size).limit(page_size) } else klass.eager_load(eager_load).all end end define_method "#{klass.name.underscore}" do |id| item = klass.eager_load(eager_load).find(id) authorize! :read, item item end define_method "#{klass.name.underscore}.create" do |params| authorize! :create, klass klass_entity = "#{klass.name}::Entity".constantize if klass_entity.respond_to?(:create_params, params) params = klass_entity.send(:create_params, params) elsif klass_entity.respond_to?(:params, params) params = klass_entity.send(:params, params) end klass.create!(params) end define_method "#{klass.name.underscore}.update" do |id, params| item = klass.find(id) authorize! :update, item klass_entity = "#{klass.name}::Entity".constantize if klass_entity.respond_to?(:update_params, params) params = klass_entity.send(:update_params, params) elsif klass_entity.respond_to?(:params, params) params = klass_entity.send(:params, params) end item.update!(params) end define_method "#{klass.name.underscore}.destroy" do |id| item = klass.find(id) authorize! :destroy, item item.destroy! end end