From 07612e29b9db7c146486d2775c368335c530daa0 Mon Sep 17 00:00:00 2001 From: Angel Aviel Domaoan Date: Mon, 31 Jan 2022 07:06:41 +0000 Subject: [PATCH] Add jurisprudences/doctrines API --- .../api/jurisprudence/doctrines_controller.rb | 56 +++++++++++++++++++ config/routes.rb | 1 + 2 files changed, 57 insertions(+) create mode 100644 app/controllers/api/jurisprudence/doctrines_controller.rb diff --git a/app/controllers/api/jurisprudence/doctrines_controller.rb b/app/controllers/api/jurisprudence/doctrines_controller.rb new file mode 100644 index 0000000..d8b8532 --- /dev/null +++ b/app/controllers/api/jurisprudence/doctrines_controller.rb @@ -0,0 +1,56 @@ +module Api + module Jurisprudence + class DoctrinesController < ::Api::BaseController + load_and_authorize_resource :jurisprudence, class: "Cdao::Jurisprudence" + load_and_authorize_resource :doctrine, class: "Doctrine", through: :jurisprudence + + def index + respond_with @doctrines + end + + def show + respond_with @doctrine + 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 diff --git a/config/routes.rb b/config/routes.rb index 3707206..f419e0e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -32,6 +32,7 @@ Rails.application.routes.draw do scope module: :jurisprudence do resources :cited_ins, only: %i[index show] resources :cross_references, only: %i[index show] + resources :doctrines end end end