52 lines
1.7 KiB
Ruby
52 lines
1.7 KiB
Ruby
class DeerjikistsController < ApplicationController
|
|
def show
|
|
platform = params[:platform].to_s.strip
|
|
code = params[:code].to_s.strip
|
|
return render_bad_request('platform は必須です.', field: :platform) if platform.blank?
|
|
return render_bad_request('code は必須です.', field: :code) if code.blank?
|
|
|
|
deerjikist = Deerjikist
|
|
.joins(:tag)
|
|
.includes(tag: :tag_name)
|
|
.find_by(platform:, code:)
|
|
if deerjikist
|
|
render json: DeerjikistRepr.base(deerjikist)
|
|
else
|
|
head :not_found
|
|
end
|
|
end
|
|
|
|
def update
|
|
return head :unauthorized unless current_user
|
|
return head :forbidden unless current_user.gte_member?
|
|
|
|
platform = params[:platform].to_s.strip
|
|
code = params[:code].to_s.strip
|
|
tag_id = params[:tag_id].to_i
|
|
return render_bad_request('platform は必須です.', field: :platform) if platform.blank?
|
|
return render_bad_request('code は必須です.', field: :code) if code.blank?
|
|
return render_bad_request('tag_id が不正です.', field: :tag_id) if tag_id <= 0
|
|
|
|
deerjikist = Deerjikist.find_or_initialize_by(platform:, code:).tap do |d|
|
|
d.tag_id = tag_id
|
|
d.save!
|
|
end
|
|
|
|
render json: DeerjikistRepr.base(deerjikist)
|
|
end
|
|
|
|
def destroy
|
|
return head :unauthorized unless current_user
|
|
return head :forbidden unless current_user.gte_member?
|
|
|
|
platform = params[:platform].to_s.strip
|
|
code = params[:code].to_s.strip
|
|
return render_bad_request('platform は必須です.', field: :platform) if platform.blank?
|
|
return render_bad_request('code は必須です.', field: :code) if code.blank?
|
|
|
|
Deerjikist.find([platform, code]).destroy!
|
|
|
|
head :no_content
|
|
end
|
|
end
|