mirror of
https://github.com/astuto/astuto.git
synced 2025-12-16 03:37:56 +01:00
49 lines
1.1 KiB
Ruby
49 lines
1.1 KiB
Ruby
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 |