Add TournamentsController

This commit is contained in:
Thor77 2018-11-25 20:04:05 +01:00
parent 83c76c456c
commit e81ef81150
No known key found for this signature in database
GPG Key ID: 5051E71B46AA669A
1 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,53 @@
# frozen_string_literal: true
class TournamentsController < ApplicationController
before_action :set_tournament, only: %i[show update destroy]
before_action :authenticate_user!, only: %i[create update destroy]
before_action -> { require_owner! @tournament.owner }, only: %i[update destroy]
# GET /tournaments
def index
tournaments = Tournament.where(public: true).or(Tournament.where(owner: current_user)).order(:created_at)
render json: tournaments, each_serializer: SimpleTournamentSerializer
end
# GET /tournaments/1
def show
render json: @tournament
end
# POST /tournaments
def create
tournament = current_user.tournaments.new tournament_params
if tournament.save
render json: tournament, status: :created, location: tournament
else
render json: tournament.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /tournaments/1
def update
if @tournament.update(tournament_params)
render json: @tournament
else
render json: @tournament.errors, status: :unprocessable_entity
end
end
# DELETE /tournaments/1
def destroy
@tournament.destroy
end
private
def set_tournament
@tournament = Tournament.find(params[:id])
end
def tournament_params
deserialize_params only: %i[name description public teams]
end
end