Browse Source

Implement DoctrineJurisprudence

pull/41/head
Angel Aviel Domaoan 4 years ago committed by Angel Aviel Domaoan
parent
commit
3069c8577e
  1. 41
      app/controllers/api/doctrines_controller.rb
  2. 40
      app/controllers/api/jurisprudence/doctrines_controller.rb
  3. 40
      app/controllers/doctrines_controller.rb
  4. 52
      app/controllers/jurisprudence/doctrines_controller.rb
  5. 3
      app/models/cdao/jurisprudence.rb
  6. 3
      app/models/doctrine.rb
  7. 6
      app/models/doctrine_jurisprudence.rb
  8. 8
      config/routes.rb
  9. 15
      db/migrate/20220215021520_create_doctrine_jurisprudences.rb
  10. 7
      db/seeds.rb

41
app/controllers/api/doctrines_controller.rb

@ -3,8 +3,7 @@ module Api
class DoctrinesController < BaseController class DoctrinesController < BaseController
include DoctrineSearch include DoctrineSearch
load_and_authorize_resource :doctrine, class: "Doctrine", only: %i[show] load_and_authorize_resource :doctrine, class: "Doctrine"
authorize_resource :doctrine, class: "Doctrine", only: %i[index]
def index def index
search = doctrine_search(search_params) search = doctrine_search(search_params)
@ -18,8 +17,46 @@ module Api
respond_with @doctrine respond_with @doctrine
end end
def create
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
@doctrine = Doctrine.new(attrs)
if @doctrine.save
@doctrine.subject_ids = subject_ids if subject_ids.present?
respond_with @doctrine
else
render errors: @doctrine.errors, status: 422
end
end
def update
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
if @doctrine.update(attrs)
@doctrine.subject_ids = subject_ids if subject_ids.present?
respond_with @doctrine
else
render errors: @doctrine.errors, status: 422
end
end
def destroy
@doctrine.destroy
respond_with @doctrine
end
private private
def resource_params
params.permit(:content, jurisprudence_ids: [], subject_ids: [])
end
def search_params def search_params
params.permit(:created_at, :q, :page, :per_page, params.permit(:created_at, :q, :page, :per_page,
exclude_ids: [], subject_ids: [], user_ids: []) exclude_ids: [], subject_ids: [], user_ids: [])

40
app/controllers/api/jurisprudence/doctrines_controller.rb

@ -11,46 +11,6 @@ module Api
def show def show
respond_with @doctrine respond_with @doctrine
end end
def create
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
@doctrine = @jurisprudence.doctrines.new(attrs)
if @doctrine.save
@doctrine.subject_ids = subject_ids if subject_ids.present?
respond_with @doctrine
else
render errors: @doctrine.errors, status: 422
end
end
def update
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
if @doctrine.update(attrs)
@doctrine.subject_ids = subject_ids if subject_ids.present?
respond_with @doctrine
else
render errors: @doctrine.errors, status: 422
end
end
def destroy
@doctrine.destroy
respond_with @doctrine
end
private
def resource_params
params.permit(:content, subject_ids: [])
end
end end
end end
end end

40
app/controllers/doctrines_controller.rb

@ -23,9 +23,47 @@ class DoctrinesController < ApplicationController
def show; end def show; end
def create
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
@doctrine = Doctrine.new(attrs)
if @doctrine.save
@doctrine.subject_ids = subject_ids if subject_ids.present?
respond_with @doctrine
else
render errors: @doctrine.errors, status: 422
end
end
def update
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
if @doctrine.update(attrs)
@doctrine.subject_ids = subject_ids if subject_ids.present?
respond_with @doctrine
else
render errors: @doctrine.errors, status: 422
end
end
def destroy
@doctrine.destroy
respond_with @doctrine
end
private private
def resource_params
params.permit(:content, jurisprudence_ids: [], subject_ids: [])
end
def search_params def search_params
params.permit(subject_ids: []) params.permit(jurisprudence_ids: [], subject_ids: [])
end end
end end

52
app/controllers/jurisprudence/doctrines_controller.rb

@ -1,52 +0,0 @@
class Jurisprudence::DoctrinesController < ApplicationController
load_and_authorize_resource :jurisprudence, class: "Cdao::Jurisprudence"
load_and_authorize_resource :doctrine, class: "Doctrine", through: :jurisprudence
def create
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
@doctrine = @jurisprudence.doctrines.new(attrs)
respond_to do |format|
if @doctrine.save
@doctrine.subject_ids = subject_ids if subject_ids.present?
format.html { redirect_to document_doctrine_path(@jurisprudence, @doctrine), notice: "Doctrine was successfully created." }
else
format.html { redirect_to document_doctrine_path(@jurisprudence) }
end
end
end
def update
attrs = resource_params.to_unsafe_h.deep_symbolize_keys
subject_ids = attrs.delete(:subject_ids)
respond_to do |format|
if @doctrine.update(attrs)
@doctrine.subject_ids = subject_ids if subject_ids.present?
format.html { redirect_to document_doctrine_path(@jurisprudence, @doctrine), notice: "Doctrine was successfully updated." }
else
format.html { redirect_to document_doctrine_path(@jurisprudence) }
end
end
end
def destroy
respond_to do |format|
if @doctrine.destroy
format.html { redirect_to document_path(@jurisprudence), notice: "Doctrine was successfully destroyed." }
else
format.html { redirect_to document_path(@jurisprudence), alert: @doctrine.errors.full_messages }
end
end
end
private
def resource_params
params.permit(:content, subject_ids: [])
end
end

3
app/models/cdao/jurisprudence.rb

@ -3,7 +3,8 @@ class Cdao::Jurisprudence < Cdao::Base
has_many :annotations, as: :document, dependent: :restrict_with_error has_many :annotations, as: :document, dependent: :restrict_with_error
has_many :doctrines, as: :document, dependent: :restrict_with_error has_many :doctrine_jurisprudences, dependent: :destroy
has_many :doctrines, through: :doctrine_jurisprudences
has_many :annotation_documents, as: :document, dependent: :restrict_with_error has_many :annotation_documents, as: :document, dependent: :restrict_with_error
has_many :annotations_as_cited, through: :annotation_documents, source: :annotation has_many :annotations_as_cited, through: :annotation_documents, source: :annotation

3
app/models/doctrine.rb

@ -1,6 +1,9 @@
class Doctrine < ApplicationRecord class Doctrine < ApplicationRecord
belongs_to :document, polymorphic: true, optional: false belongs_to :document, polymorphic: true, optional: false
has_many :doctrine_jurisprudences, dependent: :destroy
has_many :jurisprudences, through: :doctrine_jurisprudences
has_many :doctrine_subjects, dependent: :destroy has_many :doctrine_subjects, dependent: :destroy
has_many :subjects, through: :doctrine_subjects has_many :subjects, through: :doctrine_subjects

6
app/models/doctrine_jurisprudence.rb

@ -0,0 +1,6 @@
class DoctrineJurisprudence < ApplicationRecord
acts_as_list column: :rank, scope: %i[doctrine_id]
belongs_to :doctrine, optional: false
belongs_to :jurisprudence, class_name: "Cdao::Jurisprudence", optional: false
end

8
config/routes.rb

@ -10,12 +10,6 @@ Rails.application.routes.draw do
end end
end end
resources :jurisprudences, only: [] do
scope module: :jurisprudence do
resources :doctrines, only: %i[create update destroy]
end
end
resources :documents, only: %i[index show] do resources :documents, only: %i[index show] do
get :search, on: :collection get :search, on: :collection
@ -48,7 +42,7 @@ Rails.application.routes.draw do
scope module: :jurisprudence do scope module: :jurisprudence do
resources :cited_ins, only: %i[index show] resources :cited_ins, only: %i[index show]
resources :cross_references, only: %i[index show] resources :cross_references, only: %i[index show]
resources :doctrines resources :doctrines, only: %i[index show]
end end
end end
end end

15
db/migrate/20220215021520_create_doctrine_jurisprudences.rb

@ -0,0 +1,15 @@
class CreateDoctrineJurisprudences < ActiveRecord::Migration[6.1]
def change
create_table :doctrine_jurisprudences do |t|
t.references :doctrine, null: false
t.references :jurisprudence, null: false
t.integer :rank, null: false, default: 1
t.timestamps
end
add_index :doctrine_jurisprudences, %i[doctrine_id jurisprudence_id],
name: "index_doctrine_jurisprudences_uniqueness",
unique: true
end
end

7
db/seeds.rb

@ -54,3 +54,10 @@ Cdao::Subject.find_each.with_index do |subject, index|
annotation_document.document = Cdao::Jurisprudence.last(index + 101).first annotation_document.document = Cdao::Jurisprudence.last(index + 101).first
annotation_document.save annotation_document.save
end end
Doctrine.find_each do |doctrine|
doc = doctrine.document
ids = doc.doctrine_ids
ids << doctrine.id
doc.doctrine_ids = ids.uniq
end

Loading…
Cancel
Save