Browse Source

Implement jurisprudences API

pull/3/head
Angel Aviel Domaoan 4 years ago
parent
commit
478e7fae8a
  1. 5
      app/controllers/api/base_controller.rb
  2. 39
      app/controllers/api/jurisprudences_controller.rb
  3. 6
      app/models/ability.rb
  4. 3
      app/views/api/jurisprudences/index.json.jbuilder
  5. 1
      app/views/api/jurisprudences/show.json.jbuilder
  6. 6
      config/routes.rb

5
app/controllers/api/base_controller.rb

@ -0,0 +1,5 @@
module Api
class BaseController < ApplicationController
respond_to :json
end
end

39
app/controllers/api/jurisprudences_controller.rb

@ -0,0 +1,39 @@
module Api
class JurisprudencesController < BaseController
load_and_authorize_resource :jurisprudence, class: "Cdao::Jurisprudence"
skip_load_resource :jurisprudence, only: %i[index]
def index
attrs = %i[id reference_number title docdate ponente edited short_title year].freeze
fulltext_fields = %i[reference_number title short_title].freeze
search = Cdao::Jurisprudence.search do
fulltext search_params[:q], fields: fulltext_fields if search_params[:q].present?
fulltext_fields.each do |field|
fulltext search_params[field], fields: [field] if search_params[field].present?
end
order_by :doc_date
order_by :year
paginate page: params[:page] || 1, per_page: params[:per_page] || 20
end
@jurisprudences = search.results
respond_with @jurisprudences
end
def show
respond_with @jurisprudence
end
private
def search_params
params.permit(:reference_number, :title, :short_title, :q, :page, :per_page)
end
end
end

6
app/models/ability.rb

@ -6,6 +6,10 @@ class Ability
clear_aliased_actions
user ||= User.new
if user.persisted?
can :display, Cdao::Jurisprudence
end
end
def clear_aliased_actions
@ -22,4 +26,4 @@ class Ability
alias_action :create, :update, to: :modify
alias_action :display, :modify, to: :basic_manage
end
end
end

3
app/views/api/jurisprudences/index.json.jbuilder

@ -0,0 +1,3 @@
json.array!(@jurisprudences) do |jurisprudence|
json.extract! jurisprudence, *%i[id reference_number title docdate ponente edited short_title year]
end

1
app/views/api/jurisprudences/show.json.jbuilder

@ -0,0 +1 @@
json.(@jurisprudence, *%i[id reference_number title docdate ponente edited short_title year content])

6
config/routes.rb

@ -1,9 +1,13 @@
Rails.application.routes.draw do
devise_for :users
root to: "home#index"
resources :case_doctrines
resources :decisions
resources :subject_indexes
namespace :api, defaults: { format: :json } do
resources :jurisprudences, only: %i[index show]
end
end

Loading…
Cancel
Save