Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> This commit refactors the entire application to replace the 'parties' concept with 'events'. All controllers, models, views, and related files have been updated to reflect this change. The parties table has been replaced with an events table, and all related functionality has been updated accordingly.
84 lines
2.8 KiB
Ruby
Executable File
84 lines
2.8 KiB
Ruby
Executable File
# Contrôleur API pour la gestion des ressources d'événements
|
|
# Fournit des points de terminaison RESTful pour les opérations CRUD sur le modèle Event
|
|
|
|
module Api
|
|
module V1
|
|
class EventsController < ApiController
|
|
# Charge l'évén avant certaines actions pour réduire les duplications
|
|
before_action :set_event, only: [ :show, :update, :destroy ]
|
|
|
|
# GET /api/v1/events
|
|
# Récupère tous les événements triés par date de création (du plus récent au plus ancien)
|
|
def index
|
|
@events = Event.all.order(created_at: :desc)
|
|
render json: @events, status: :ok
|
|
end
|
|
|
|
# GET /api/v1/events/:id
|
|
# Récupère un seul événement par son ID
|
|
# Retourne 404 si l'événement n'est pas trouvé
|
|
def show
|
|
render json: @event, status: :ok
|
|
end
|
|
|
|
# POST /api/v1/events
|
|
# Crée un nouvel événement avec les attributs fournis
|
|
# Retourne 201 Created en cas de succès avec les données de l'événement
|
|
# Retourne 422 Unprocessable Entity avec les messages d'erreur en cas d'échec
|
|
def create
|
|
@event = Event.new(event_params)
|
|
if @event.save
|
|
render json: @event, status: :created
|
|
else
|
|
render json: { errors: @event.errors.full_messages }, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
# PATCH/PUT /api/v1/events/:id
|
|
# Met à jour un événement existant avec les attributs fournis
|
|
# Retourne 200 OK avec les données mises à jour en cas de succès
|
|
# Retourne 422 Unprocessable Entity avec les messages d'erreur en cas d'échec
|
|
def update
|
|
if @event.update(event_params)
|
|
render json: @event, status: :ok
|
|
else
|
|
render json: { errors: @event.errors.full_messages }, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
# DELETE /api/v1/events/:id
|
|
# Supprime définitivement un événement
|
|
# Retourne 204 No Content en cas de succès
|
|
def destroy
|
|
@event.destroy
|
|
head :no_content
|
|
end
|
|
|
|
private
|
|
|
|
# Trouve un événement par son ID ou retourne 404 Introuvable
|
|
# Utilisé comme before_action pour les actions show, update et destroy
|
|
def set_event
|
|
@event = Event.find(params[:id])
|
|
rescue ActiveRecord::RecordNotFound
|
|
render json: { error: "Événement non trouvé" }, status: :not_found
|
|
end
|
|
|
|
# Paramètres forts pour la création et la mise à jour des événements
|
|
# Liste blanche des attributs autorisés pour éviter les vulnérabilités de mass assignment
|
|
def event_params
|
|
params.require(:event).permit(
|
|
:name,
|
|
:description,
|
|
:state,
|
|
:venue_name,
|
|
:venue_address,
|
|
:latitude,
|
|
:longitude,
|
|
:featured
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|