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