igor-starostenko/report_factory

View on GitHub
app/controllers/projects_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

# Provides logic and interface for Projects API
class ProjectsController < BaseProjectsController
  before_action :set_project, only: %i[show update destroy]
  before_action :require_admin, only: %i[create destroy]

  PROJECT_ATTRIBUTES = %i[project_name].freeze

  def index
    @projects = Project.all
    render jsonapi: @projects, status: :ok
  end

  def show
    render jsonapi: @project, status: :ok
  end

  def create
    @project = Project.new(attributes(:project))

    if @project.save
      render jsonapi: @project, status: :created
    else
      render jsonapi_errors: @project.errors, status: :bad_request
    end
  end

  def update
    if @project.update(attributes(:project))
      render jsonapi: @project, status: :ok
    else
      render jsonapi_errors: @project.errors, status: :bad_request
    end
  end

  def destroy
    @project.destroy
    text = "Project #{@project.project_name} was deleted successfully"
    render json: { message: text }, status: :ok
  end
end