app/controllers/simple_admin/resources_controller.rb in simpleadmin-1.0.0 vs app/controllers/simple_admin/resources_controller.rb in simpleadmin-1.0.1

- old
+ new

@@ -1,100 +1,98 @@ -module Api::V1 - module SimpleAdmin - class ResourcesController < BaseController - def index - model_klass = params[:model_klass_name].constantize - model_fields = params[:model_fields] +module SimpleAdmin + class ResourcesController < BaseController + def index + model_klass = params[:model_klass_name].constantize + model_fields = params[:model_fields] - per_page = params[:per_page].to_i - page = params[:page].to_i if params[:page].present? - total = model_klass.count + per_page = params[:per_page].to_i + page = params[:page].to_i if params[:page].present? + total = model_klass.count - resources = model_klass.limit(per_page) + resources = model_klass.limit(per_page) - if params[:query].present? - search_result = search(params[:query], model_klass, params[:model_attributes]) + if params[:query].present? + search_result = search(params[:query], model_klass, params[:model_attributes]) - resources = search_result[:resources] - total = search_result[:total] - end + resources = search_result[:resources] + total = search_result[:total] + end - resources = resources.offset((per_page * page) - per_page) if page.present? - resources = resources.order(params[:sort][:column_name] => params[:sort][:order]) if params[:sort].present? + resources = resources.offset((per_page * page) - per_page) if page.present? + resources = resources.order(params[:sort][:column_name] => params[:sort][:order]) if params[:sort].present? - resources = resources.map do |resource| - _resource = {} + resources = resources.map do |resource| + _resource = {} - resource.attributes.each do |attribute_name, attribute_value| - next unless model_fields.include?(attribute_name) + resource.attributes.each do |attribute_name, attribute_value| + next unless model_fields.include?(attribute_name) - _resource[attribute_name] = attribute_value - end - - _resource + _resource[attribute_name] = attribute_value end - render json: { - resources: resources, - total: total - } + _resource end - def show - model_klass = params[:model_klass_name].constantize - model_fields = params[:model_fields] + render json: { + resources: resources, + total: total + } + end - resource = model_klass.find(params[:id]).attributes.slice(*model_fields) + def show + model_klass = params[:model_klass_name].constantize + model_fields = params[:model_fields] - render json: resource - end + resource = model_klass.find(params[:id]).attributes.slice(*model_fields) - def create - model_klass = params[:model_klass_name].constantize + render json: resource + end - resource = model_klass.new(resource_params) + def create + model_klass = params[:model_klass_name].constantize - if resource.save - render json: resource - else - render json: resource.errors - end + resource = model_klass.new(resource_params) + + if resource.save + render json: resource + else + render json: resource.errors end + end - def update - model_klass = params[:model_klass_name].constantize - resource = model_klass.find(params[:id]) + def update + model_klass = params[:model_klass_name].constantize + resource = model_klass.find(params[:id]) - if resource.update(resource_params) - render json: resource - else - render json: resource.errors - end + if resource.update(resource_params) + render json: resource + else + render json: resource.errors end + end - def destroy - model_klass = params[:model_klass_name].constantize - resource = model_klass.find(params[:id]) + def destroy + model_klass = params[:model_klass_name].constantize + resource = model_klass.find(params[:id]) - resource.destroy - end + resource.destroy + end - private + private - def search(search_query, model_klass, model_attributes) - return [] if model_attributes.empty? + def search(search_query, model_klass, model_attributes) + return [] if model_attributes.empty? - query = model_attributes.map { |model_attribute| "#{model_attribute} LIKE ?" }.join(' OR ') - query_arguments = model_attributes.map { "%#{search_query}%" } + query = model_attributes.map { |model_attribute| "#{model_attribute} LIKE ?" }.join(' OR ') + query_arguments = model_attributes.map { "%#{search_query}%" } - { - resources: model_klass.where(query, *query_arguments), - total: model_klass.where(query, *query_arguments).count - } - end + { + resources: model_klass.where(query, *query_arguments), + total: model_klass.where(query, *query_arguments).count + } + end - def resource_params - params.require(:resource).permit! - end - end + def resource_params + params.require(:resource).permit! + end end end