Add Summon and GridSummons model and controllers
This commit is contained in:
parent
4e3c628c8d
commit
132f676e2a
9 changed files with 145 additions and 0 deletions
32
app/controllers/api/v1/grid_summons_controller.rb
Normal file
32
app/controllers/api/v1/grid_summons_controller.rb
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
class Api::V1::GridSummonsController < Api::V1::ApiController
|
||||
def create
|
||||
party = Party.find(summon_params[:party_id])
|
||||
canonical_summon = Summon.find(summon_params[:summon_id])
|
||||
|
||||
if current_user
|
||||
if party.user != current_user
|
||||
render_unauthorized_response
|
||||
end
|
||||
end
|
||||
|
||||
if grid_summon = GridSummon.where(
|
||||
party_id: party.id,
|
||||
position: summon_params[:position]
|
||||
).first
|
||||
GridSummon.destroy(grid_summon.id)
|
||||
end
|
||||
|
||||
@summon = GridSummon.create!(summon_params.merge(party_id: party.id, summon_id: canonical_summon.id))
|
||||
render :show, status: :created if @summon.save!
|
||||
end
|
||||
|
||||
def destroy
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Specify whitelisted properties that can be modified.
|
||||
def summon_params
|
||||
params.require(:summon).permit(:party_id, :summon_id, :position, :main, :friend)
|
||||
end
|
||||
end
|
||||
7
app/models/grid_summon.rb
Normal file
7
app/models/grid_summon.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
class GridSummon < ApplicationRecord
|
||||
belongs_to :party
|
||||
|
||||
def summon
|
||||
Summon.find(self.summon_id)
|
||||
end
|
||||
end
|
||||
11
app/models/summon.rb
Normal file
11
app/models/summon.rb
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
class Summon < ApplicationRecord
|
||||
include PgSearch::Model
|
||||
|
||||
pg_search_scope :search,
|
||||
against: [:name_en, :name_jp],
|
||||
using: {
|
||||
tsearch: {
|
||||
prefix: true
|
||||
}
|
||||
}
|
||||
end
|
||||
9
app/views/api/v1/grid_summons/base.json.rabl
Normal file
9
app/views/api/v1/grid_summons/base.json.rabl
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
attributes :id,
|
||||
:party_id,
|
||||
:main,
|
||||
:friend,
|
||||
:position
|
||||
|
||||
node :summon do |w|
|
||||
partial('summons/base', :object => w.summon)
|
||||
end
|
||||
3
app/views/api/v1/grid_summons/show.json.rabl
Normal file
3
app/views/api/v1/grid_summons/show.json.rabl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
object @summon
|
||||
|
||||
extends 'api/v1/grid_summons/base'
|
||||
3
app/views/api/v1/search/summons.json.rabl
Normal file
3
app/views/api/v1/search/summons.json.rabl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
collection @summons, :object_root => false
|
||||
|
||||
extends 'summons/base'
|
||||
39
app/views/api/v1/summons/base.json.rabl
Normal file
39
app/views/api/v1/summons/base.json.rabl
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
object :summon
|
||||
|
||||
attributes :id,
|
||||
:granblue_id,
|
||||
:element,
|
||||
:rarity,
|
||||
:max_level
|
||||
|
||||
node :name do |w|
|
||||
{
|
||||
:en => w.name_en,
|
||||
:jp => w.name_jp
|
||||
}
|
||||
end
|
||||
|
||||
node :uncap do |w|
|
||||
{
|
||||
:flb => w.flb,
|
||||
:ulb => w.ulb
|
||||
}
|
||||
end
|
||||
|
||||
node :hp do |w|
|
||||
{
|
||||
:min_hp => w.min_hp,
|
||||
:max_hp => w.max_hp,
|
||||
:max_hp_flb => w.max_hp_flb,
|
||||
:max_hp_ulb => w.max_hp_ulb
|
||||
}
|
||||
end
|
||||
|
||||
node :atk do |w|
|
||||
{
|
||||
:min_atk => w.min_atk,
|
||||
:max_atk => w.max_atk,
|
||||
:max_atk_flb => w.max_atk_flb,
|
||||
:max_atk_ulb => w.max_atk_ulb
|
||||
}
|
||||
end
|
||||
26
db/migrate/20201017013942_create_summons.rb
Normal file
26
db/migrate/20201017013942_create_summons.rb
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
class CreateSummons < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :summons, id: :uuid, default: -> { "gen_random_uuid()" } do |t|
|
||||
t.string :name_en
|
||||
t.string :name_jp
|
||||
t.integer :granblue_id
|
||||
|
||||
t.integer :rarity
|
||||
t.integer :element
|
||||
t.string :series
|
||||
|
||||
t.boolean :flb
|
||||
t.boolean :ulb
|
||||
|
||||
t.integer :max_level
|
||||
t.integer :min_hp
|
||||
t.integer :max_hp
|
||||
t.integer :max_hp_flb
|
||||
t.integer :max_hp_ulb
|
||||
t.integer :min_atk
|
||||
t.integer :max_atk
|
||||
t.integer :max_atk_flb
|
||||
t.integer :max_atk_ulb
|
||||
end
|
||||
end
|
||||
end
|
||||
15
db/migrate/20201017013949_create_grid_summons.rb
Normal file
15
db/migrate/20201017013949_create_grid_summons.rb
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
class CreateGridSummons < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :grid_summons, id: :uuid, default: -> { "gen_random_uuid()" } do |t|
|
||||
t.references :party, type: :uuid
|
||||
t.references :summon, type: :uuid
|
||||
|
||||
t.integer :uncap_level
|
||||
t.boolean :main
|
||||
t.boolean :friend
|
||||
t.integer :position
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue