123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- module ApplicationController::RendersModels
- extend ActiveSupport::Concern
- private
- # model helper
- def model_create_render(object, params)
- clean_params = object.association_name_to_id_convert(params)
- clean_params = object.param_cleanup(clean_params, true)
- # create object
- generic_object = object.new(clean_params)
- # set relations
- generic_object.associations_from_param(params)
- # save object
- generic_object.save!
- if response_expand?
- render json: generic_object.attributes_with_association_names, status: :created
- return
- end
- if response_full?
- render json: generic_object.class.full(generic_object.id), status: :created
- return
- end
- model_create_render_item(generic_object)
- end
- def model_create_render_item(generic_object)
- render json: generic_object.attributes_with_association_ids, status: :created
- end
- def model_update_render(object, params)
- # find object
- generic_object = object.find(params[:id])
- clean_params = object.association_name_to_id_convert(params)
- clean_params = object.param_cleanup(clean_params, true)
- generic_object.with_lock do
- # set relations
- generic_object.associations_from_param(params)
- # set attributes
- generic_object.update!(clean_params)
- end
- if response_expand?
- render json: generic_object.attributes_with_association_names, status: :ok
- return
- end
- if response_full?
- render json: generic_object.class.full(generic_object.id), status: :ok
- return
- end
- model_update_render_item(generic_object)
- end
- def model_update_render_item(generic_object)
- render json: generic_object.attributes_with_association_ids, status: :ok
- end
- def model_destroy_render(object, params)
- generic_object = object.find(params[:id])
- generic_object.destroy!
- model_destroy_render_item()
- end
- def model_destroy_render_item ()
- render json: {}, status: :ok
- end
- def model_show_render(object, params)
- if response_expand?
- generic_object = object.find(params[:id])
- render json: generic_object.attributes_with_association_names, status: :ok
- return
- end
- if response_full?
- render json: object.full(params[:id]), status: :ok
- return
- end
- model_show_render_item(object.find(params[:id]))
- end
- def model_show_render_item(generic_object)
- render json: generic_object.attributes_with_association_ids, status: :ok
- end
- def model_index_render(object, params)
- offset = 0
- per_page = 500
- if params[:page] && params[:per_page]
- offset = (params[:page].to_i - 1) * params[:per_page].to_i
- limit = params[:per_page].to_i
- end
- if per_page > 500
- per_page = 500
- end
- generic_objects = if offset.positive?
- object.limit(params[:per_page]).order(id: 'ASC').offset(offset).limit(limit)
- else
- object.all.order(id: 'ASC').offset(offset).limit(limit)
- end
- if response_expand?
- list = []
- generic_objects.each do |generic_object|
- list.push generic_object.attributes_with_association_names
- end
- render json: list, status: :ok
- return
- end
- if response_full?
- assets = {}
- item_ids = []
- generic_objects.each do |item|
- item_ids.push item.id
- assets = item.assets(assets)
- end
- render json: {
- record_ids: item_ids,
- assets: assets,
- }, status: :ok
- return
- end
- generic_objects_with_associations = []
- generic_objects.each do |item|
- generic_objects_with_associations.push item.attributes_with_association_ids
- end
- model_index_render_result(generic_objects_with_associations)
- end
- def model_index_render_result(generic_objects)
- render json: generic_objects, status: :ok
- end
- def model_references_check(object, params)
- generic_object = object.find(params[:id])
- result = Models.references(object, generic_object.id)
- return false if result.blank?
- raise Exceptions::UnprocessableEntity, 'Can\'t delete, object has references.'
- rescue => e
- raise Exceptions::UnprocessableEntity, e
- end
- end
|