Refactor GridObjectControllers to use blueprinter

This commit is contained in:
Justin Edmund 2022-12-21 20:53:48 -08:00
parent 2a74b8aa4d
commit 116ec9dbbc
3 changed files with 36 additions and 34 deletions

View file

@ -27,24 +27,23 @@ module Api
# a decision. # a decision.
# Up to 3 characters can be removed at the same time # Up to 3 characters can be removed at the same time
@conflict_characters = conflict_characters render json: ConflictBlueprint.render(nil, view: :characters,
@incoming_character = incoming_character conflict_characters: conflict_characters,
@incoming_position = character_params[:position] incoming_character: incoming_character,
incoming_position: character_params[:position])
render :conflict, status: :ok
else else
# Replace the grid character in the position if it is already filled # Replace the grid character in the position if it is already filled
if GridCharacter.where(party_id: party.id, position: character_params[:position]).exists? if GridCharacter.where(party_id: party.id, position: character_params[:position]).exists?
@character = GridCharacter.where(party_id: party.id, position: character_params[:position]).limit(1)[0] character = GridCharacter.where(party_id: party.id, position: character_params[:position]).limit(1)[0]
@character.character_id = incoming_character.id character.character_id = incoming_character.id
# Otherwise, create a new grid character # Otherwise, create a new grid character
else else
@character = GridCharacter.create!(character_params.merge(party_id: party.id, character = GridCharacter.create!(character_params.merge(party_id: party.id,
character_id: incoming_character.id)) character_id: incoming_character.id))
end end
render :show, status: :created if @character.save! render json: GridCharacterBlueprint.render(character, view: :nested), status: :created if character.save!
end end
end end
@ -70,20 +69,21 @@ module Api
uncap_level = 5 if incoming.flb uncap_level = 5 if incoming.flb
end end
@character = GridCharacter.create!(party_id: party.id, character_id: incoming.id, character = GridCharacter.create!(party_id: party.id, character_id: incoming.id,
position: resolve_params[:position], uncap_level: uncap_level) position: resolve_params[:position], uncap_level: uncap_level)
render :show, status: :created if @character.save! render json: GridCharacterBlueprint.render(character, view: :nested), status: :created if character.save!
end end
def update_uncap_level def update_uncap_level
@character = GridCharacter.find(character_params[:id]) character = GridCharacter.find(character_params[:id])
render_unauthorized_response if current_user && (@character.party.user != current_user) render_unauthorized_response if current_user && (character.party.user != current_user)
@character.uncap_level = character_params[:uncap_level] character.uncap_level = character_params[:uncap_level]
render :show, status: :ok if @character.save! render json: GridCharacterBlueprint.render(character, view: :uncap) if character.save!
end end
# TODO: Implement removing characters
def destroy; end def destroy; end
private private

View file

@ -16,19 +16,20 @@ module Api
GridSummon.destroy(grid_summon.id) GridSummon.destroy(grid_summon.id)
end end
@summon = GridSummon.create!(summon_params.merge(party_id: party.id, summon_id: canonical_summon.id)) summon = GridSummon.create!(summon_params.merge(party_id: party.id, summon_id: canonical_summon.id))
render :show, status: :created if @summon.save! render json: GridSummonBlueprint.render(summon, view: :nested), status: :created if summon.save!
end end
def update_uncap_level def update_uncap_level
@summon = GridSummon.find(summon_params[:id]) summon = GridSummon.find(summon_params[:id])
render_unauthorized_response if current_user && (@summon.party.user != current_user) render_unauthorized_response if current_user && (summon.party.user != current_user)
@summon.uncap_level = summon_params[:uncap_level] summon.uncap_level = summon_params[:uncap_level]
render :show, status: :ok if @summon.save! render json: GridSummonBlueprint.render(summon, view: :uncap) if summon.save!
end end
# TODO: Implement removing summons
def destroy; end def destroy; end
private private

View file

@ -11,44 +11,45 @@ module Api
render_unauthorized_response if current_user && (party.user != current_user) render_unauthorized_response if current_user && (party.user != current_user)
if grid_weapon = GridWeapon.where( if (grid_weapon = GridWeapon.where(
party_id: party.id, party_id: party.id,
position: weapon_params[:position] position: weapon_params[:position]
).first ).first)
GridWeapon.destroy(grid_weapon.id) GridWeapon.destroy(grid_weapon.id)
end end
@weapon = GridWeapon.create!(weapon_params.merge(party_id: party.id, weapon_id: canonical_weapon.id)) weapon = GridWeapon.create!(weapon_params.merge(party_id: party.id, weapon_id: canonical_weapon.id))
if @weapon.position == -1 if weapon.position == -1
party.element = @weapon.weapon.element party.element = weapon.weapon.element
party.save! party.save!
end end
render :show, status: :created if @weapon.save! render json: GridWeaponBlueprint.render(weapon, view: :full), status: :created if weapon.save!
end end
def update def update
render_unauthorized_response if current_user && (@weapon.party.user != current_user) render_unauthorized_response if current_user && (@weapon.party.user != current_user)
ap weapon_params
# TODO: Server-side validation of weapon mods # TODO: Server-side validation of weapon mods
# We don't want someone modifying the JSON and adding # We don't want someone modifying the JSON and adding
# keys to weapons that cannot have them # keys to weapons that cannot have them
# Maybe we make methods on the model to validate for us somehow # Maybe we make methods on the model to validate for us somehow
render :update, status: :ok if @weapon.update(weapon_params) render json: GridWeaponBlueprint.render(@weapon, view: :nested) if @weapon.update(weapon_params)
end end
# TODO: Implement removing characters
def destroy; end
def update_uncap_level def update_uncap_level
@weapon = GridWeapon.find(weapon_params[:id]) @weapon = GridWeapon.find(weapon_params[:id])
render_unauthorized_response if current_user && (party.user != current_user) render_unauthorized_response if current_user && (@weapon.party.user != current_user)
@weapon.uncap_level = weapon_params[:uncap_level] @weapon.uncap_level = weapon_params[:uncap_level]
render :show, status: :ok if @weapon.save! render json: GridWeaponBlueprint.render(@weapon, view: :uncap), status: :created if @weapon.save!
end end
private private