- show and update actions with editor role protection - include game_name field in blueprint - clear cache after updates
70 lines
2 KiB
Ruby
70 lines
2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Api
|
|
module V1
|
|
class ArtifactSkillsController < Api::V1::ApiController
|
|
before_action :set_artifact_skill, only: %w[show update]
|
|
before_action :ensure_editor_role, only: %w[update]
|
|
|
|
# GET /artifact_skills
|
|
def index
|
|
@skills = ArtifactSkill.all
|
|
@skills = @skills.where(skill_group: params[:group]) if params[:group].present?
|
|
@skills = @skills.where(polarity: params[:polarity]) if params[:polarity].present?
|
|
|
|
render json: ArtifactSkillBlueprint.render(@skills, root: :artifact_skills)
|
|
end
|
|
|
|
# GET /artifact_skills/for_slot/:slot
|
|
# Returns skills valid for a specific slot (1-4)
|
|
def for_slot
|
|
slot = params[:slot].to_i
|
|
|
|
unless (1..4).cover?(slot)
|
|
return render json: { error: 'Slot must be between 1 and 4' }, status: :unprocessable_entity
|
|
end
|
|
|
|
@skills = ArtifactSkill.for_slot(slot)
|
|
render json: ArtifactSkillBlueprint.render(@skills, root: :artifact_skills)
|
|
end
|
|
|
|
# GET /artifact_skills/:id
|
|
def show
|
|
render json: ArtifactSkillBlueprint.render(@skill)
|
|
end
|
|
|
|
# PATCH/PUT /artifact_skills/:id
|
|
def update
|
|
if @skill.update(artifact_skill_params)
|
|
ArtifactSkill.clear_cache!
|
|
render json: ArtifactSkillBlueprint.render(@skill)
|
|
else
|
|
render_validation_error_response(@skill)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def set_artifact_skill
|
|
@skill = ArtifactSkill.find(params[:id])
|
|
end
|
|
|
|
def ensure_editor_role
|
|
return if current_user&.role && current_user.role >= 7
|
|
|
|
render json: { error: 'Unauthorized - Editor role required' }, status: :unauthorized
|
|
end
|
|
|
|
def artifact_skill_params
|
|
params.permit(
|
|
:skill_group, :modifier,
|
|
:name_en, :name_jp,
|
|
:game_name_en, :game_name_jp,
|
|
:suffix_en, :suffix_jp,
|
|
:growth, :polarity,
|
|
base_values: []
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|