Files
astuto/app/controllers/api/v1/boards_controller.rb

49 lines
1.1 KiB
Ruby
Raw Normal View History

2024-11-08 16:40:53 +01:00
module Api
module V1
class BoardsController < BaseController
include Api::V1::Serializers
# List all boards
def index
boards = Board.all
authorize([:api, Board])
render json: boards.map { |board| board.slice(*BOARD_JSON_ATTRIBUTES) }
end
# Get the board by id or slug
def show
board = Board.find_by(id: params[:id]) || Board.find_by(slug: params[:id])
unless board
raise ActiveRecord::RecordNotFound, "Board with id #{params[:id]} not found"
end
authorize([:api, board])
render json: board.slice(*BOARD_JSON_ATTRIBUTES)
end
# Create a new board
def create
board = Board.new(board_params)
authorize([:api, board])
if board.save
render json: { id: board.id }, status: :created
else
render json: { errors: board.errors.full_messages }, status: :unprocessable_entity
end
end
private
def board_params
params.require(:name)
params.permit(:name, :slug, :description)
end
end
end
end