Add /tournaments/:id/stages endpoint

This commit is contained in:
Thor77 2019-10-10 19:30:49 +02:00
parent 46c903e109
commit 5ea64aed02
2 changed files with 29 additions and 0 deletions

View File

@ -4,6 +4,7 @@ class StagesController < ApplicationController
before_action :set_stage, only: %i[show update]
before_action :authenticate_user!, only: %i[update]
before_action -> { require_owner! @stage.owner }, only: %i[update]
rescue_from ActiveRecord::RecordNotFound, with: :render_not_found_error
# GET /stages/1
def show
@ -35,6 +36,29 @@ class StagesController < ApplicationController
end
end
def index
tournament = Tournament.find(params[:tournament_id])
level_param = index_params[:level]
if level_param
if level_param == 'current'
# TODO: find current stage
elsif level_param == 'group'
group_stage = tournament.stages.find_by(level: -1)
if group_stage
render json: group_stage
else
render json: { error: 'There\'s no group stage for this tournament' }, status: :not_found
end
elsif level_param.to_i.to_s == level_param
render json: tournament.stages.find_by!(level: level_param.to_i)
else
render json: { error: 'Invalid level parameter' }, status: unprocessable_entity
end
else
render json: tournament.stages unless level_param
end
end
private
def handle_group_stage_end
@ -59,4 +83,8 @@ class StagesController < ApplicationController
def stage_params
params.slice(:state).permit!
end
def index_params
params.permit(:level)
end
end

View File

@ -13,6 +13,7 @@ Rails.application.routes.draw do
resources :teams, only: %i[show update]
resources :tournaments do
resources :statistics, only: %i[index]
resources :stages, only: %i[index]
end
resources :match_scores, only: %i[show update]
resources :groups, only: %i[show]