add creature and base rp_world
This commit is contained in:
2
Gemfile
2
Gemfile
@@ -35,7 +35,7 @@ gem 'omniauth-bnet', '~> 2.0.0'
|
|||||||
# This gem provides a mitigation against CVE-2015-9284
|
# This gem provides a mitigation against CVE-2015-9284
|
||||||
gem 'omniauth-rails_csrf_protection', '~> 0.1.2'
|
gem 'omniauth-rails_csrf_protection', '~> 0.1.2'
|
||||||
# A Ruby wrapper around Blizzard's Game Data and Profile APIs
|
# A Ruby wrapper around Blizzard's Game Data and Profile APIs
|
||||||
gem 'rbattlenet', '~> 2.2.7', git: 'https://github.com/Dainii/rbattlenet'
|
gem 'rbattlenet', '~> 2.2.9', git: 'https://github.com/Dainii/rbattlenet'
|
||||||
# A gem that provides Rails integration for the Sentry error logger
|
# A gem that provides Rails integration for the Sentry error logger
|
||||||
gem 'sentry-rails', '~> 4.4.0'
|
gem 'sentry-rails', '~> 4.4.0'
|
||||||
gem 'sentry-ruby', '~> 4.4.1'
|
gem 'sentry-ruby', '~> 4.4.1'
|
||||||
|
|||||||
20
Gemfile.lock
20
Gemfile.lock
@@ -1,8 +1,8 @@
|
|||||||
GIT
|
GIT
|
||||||
remote: https://github.com/Dainii/rbattlenet
|
remote: https://github.com/Dainii/rbattlenet
|
||||||
revision: 6fc990a743b1cec56e95820aec9222b5ff2e843a
|
revision: a0492dd16f9b29b61e364009272d60e9201e1337
|
||||||
specs:
|
specs:
|
||||||
rbattlenet (2.2.7)
|
rbattlenet (2.2.9)
|
||||||
require_all
|
require_all
|
||||||
typhoeus (~> 1.1)
|
typhoeus (~> 1.1)
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ GEM
|
|||||||
multi_xml (0.6.0)
|
multi_xml (0.6.0)
|
||||||
multipart-post (2.1.1)
|
multipart-post (2.1.1)
|
||||||
nio4r (2.5.7)
|
nio4r (2.5.7)
|
||||||
nokogiri (1.11.3-x86_64-linux)
|
nokogiri (1.11.6-x86_64-linux)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
oauth2 (1.4.7)
|
oauth2 (1.4.7)
|
||||||
faraday (>= 0.8, < 2.0)
|
faraday (>= 0.8, < 2.0)
|
||||||
@@ -186,7 +186,7 @@ GEM
|
|||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
pagy (4.3.0)
|
pagy (4.3.0)
|
||||||
parallel (1.20.1)
|
parallel (1.20.1)
|
||||||
parser (3.0.1.0)
|
parser (3.0.1.1)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
pg (1.2.3)
|
pg (1.2.3)
|
||||||
pry (0.14.1)
|
pry (0.14.1)
|
||||||
@@ -272,17 +272,17 @@ GEM
|
|||||||
rspec-mocks (~> 3.10)
|
rspec-mocks (~> 3.10)
|
||||||
rspec-support (~> 3.10)
|
rspec-support (~> 3.10)
|
||||||
rspec-support (3.10.2)
|
rspec-support (3.10.2)
|
||||||
rubocop (1.13.0)
|
rubocop (1.16.0)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 3.0.0.0)
|
parser (>= 3.0.0.0)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
regexp_parser (>= 1.8, < 3.0)
|
regexp_parser (>= 1.8, < 3.0)
|
||||||
rexml
|
rexml
|
||||||
rubocop-ast (>= 1.2.0, < 2.0)
|
rubocop-ast (>= 1.7.0, < 2.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 1.4.0, < 3.0)
|
unicode-display_width (>= 1.4.0, < 3.0)
|
||||||
rubocop-ast (1.4.1)
|
rubocop-ast (1.7.0)
|
||||||
parser (>= 2.7.1.5)
|
parser (>= 3.0.1.1)
|
||||||
rubocop-performance (1.11.0)
|
rubocop-performance (1.11.0)
|
||||||
rubocop (>= 1.7.0, < 2.0)
|
rubocop (>= 1.7.0, < 2.0)
|
||||||
rubocop-ast (>= 0.4.0)
|
rubocop-ast (>= 0.4.0)
|
||||||
@@ -329,7 +329,7 @@ GEM
|
|||||||
simplecov_json_formatter (~> 0.1)
|
simplecov_json_formatter (~> 0.1)
|
||||||
simplecov-html (0.12.3)
|
simplecov-html (0.12.3)
|
||||||
simplecov_json_formatter (0.1.2)
|
simplecov_json_formatter (0.1.2)
|
||||||
solargraph (0.40.4)
|
solargraph (0.41.1)
|
||||||
backport (~> 1.1)
|
backport (~> 1.1)
|
||||||
benchmark
|
benchmark
|
||||||
bundler (>= 1.17.2)
|
bundler (>= 1.17.2)
|
||||||
@@ -411,7 +411,7 @@ DEPENDENCIES
|
|||||||
rails (~> 6.1.3, >= 6.1.3.1)
|
rails (~> 6.1.3, >= 6.1.3.1)
|
||||||
rails-erd
|
rails-erd
|
||||||
rails-i18n (~> 6.0.0)
|
rails-i18n (~> 6.0.0)
|
||||||
rbattlenet (~> 2.2.7)!
|
rbattlenet (~> 2.2.9)!
|
||||||
redis (~> 4.2.5)
|
redis (~> 4.2.5)
|
||||||
rspec-rails
|
rspec-rails
|
||||||
rubocop
|
rubocop
|
||||||
|
|||||||
3
app/assets/stylesheets/rp_world.scss
Normal file
3
app/assets/stylesheets/rp_world.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the RpWorld controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: https://sass-lang.com/
|
||||||
9
app/controllers/rp_worlds_controller.rb
Normal file
9
app/controllers/rp_worlds_controller.rb
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
class RpWorldsController < ApplicationController
|
||||||
|
def index
|
||||||
|
@rp_worlds = RpWorld.all
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@rp_world = RpWorld.includes(:wow_characters).find(params[:id])
|
||||||
|
end
|
||||||
|
end
|
||||||
2
app/helpers/rp_world_helper.rb
Normal file
2
app/helpers/rp_world_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
module RpWorldHelper
|
||||||
|
end
|
||||||
9
app/models/rp_world.rb
Normal file
9
app/models/rp_world.rb
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
class RpWorld < ApplicationRecord
|
||||||
|
belongs_to :user
|
||||||
|
alias_attribute :owner, :user
|
||||||
|
has_many :wow_character_play_rp_worlds, dependent: :destroy
|
||||||
|
has_many :wow_characters, through: :wow_character_play_rp_worlds
|
||||||
|
alias_attribute :members, :wow_characters
|
||||||
|
|
||||||
|
validates :name, presence: true
|
||||||
|
end
|
||||||
@@ -17,6 +17,8 @@ class WowCharacter < ApplicationRecord
|
|||||||
has_one :wow_character_medium, dependent: :destroy
|
has_one :wow_character_medium, dependent: :destroy
|
||||||
has_many :wow_standings, dependent: :destroy
|
has_many :wow_standings, dependent: :destroy
|
||||||
has_many :wow_reputations, through: :wow_standings
|
has_many :wow_reputations, through: :wow_standings
|
||||||
|
has_many :wow_character_play_rp_worlds, dependent: :destroy
|
||||||
|
has_many :rp_worlds, through: :wow_character_play_rp_worlds
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :character_id, presence: true, uniqueness: true
|
validates :character_id, presence: true, uniqueness: true
|
||||||
|
|||||||
7
app/models/wow_character_play_rp_world.rb
Normal file
7
app/models/wow_character_play_rp_world.rb
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
class WowCharacterPlayRpWorld < ApplicationRecord
|
||||||
|
belongs_to :wow_character
|
||||||
|
belongs_to :rp_world
|
||||||
|
|
||||||
|
validates :status, presence: true, format: { with: /(INVITED|PENDING|PLAYING|BANNED)/ }
|
||||||
|
validates :role, presence: true, format: { with: /(PLAYER|MODERATOR|ADMIN)/ }
|
||||||
|
end
|
||||||
10
app/models/wow_creature.rb
Normal file
10
app/models/wow_creature.rb
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
class WowCreature < ApplicationRecord
|
||||||
|
extend Mobility
|
||||||
|
translates :name
|
||||||
|
|
||||||
|
belongs_to :wow_creature_family, optional: true
|
||||||
|
belongs_to :wow_creature_type, optional: true
|
||||||
|
|
||||||
|
validates :name, presence: true
|
||||||
|
validates :creature_id, presence: true, uniqueness: true
|
||||||
|
end
|
||||||
9
app/models/wow_creature_family.rb
Normal file
9
app/models/wow_creature_family.rb
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
class WowCreatureFamily < ApplicationRecord
|
||||||
|
extend Mobility
|
||||||
|
translates :name
|
||||||
|
|
||||||
|
has_many :wow_creatures, dependent: :destroy
|
||||||
|
|
||||||
|
validates :name, presence: true
|
||||||
|
validates :creature_family_id, presence: true, uniqueness: true
|
||||||
|
end
|
||||||
9
app/models/wow_creature_type.rb
Normal file
9
app/models/wow_creature_type.rb
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
class WowCreatureType < ApplicationRecord
|
||||||
|
extend Mobility
|
||||||
|
translates :name
|
||||||
|
|
||||||
|
has_many :wow_creatures, dependent: :destroy
|
||||||
|
|
||||||
|
validates :name, presence: true
|
||||||
|
validates :creature_type_id, presence: true, uniqueness: true
|
||||||
|
end
|
||||||
@@ -16,6 +16,9 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link <%= 'active' if current_page?(wow_reputations_path) %>" aria-current="page" href="<%= wow_reputations_path %>"><%= t('layouts.navbar.reputations') %></a>
|
<a class="nav-link <%= 'active' if current_page?(wow_reputations_path) %>" aria-current="page" href="<%= wow_reputations_path %>"><%= t('layouts.navbar.reputations') %></a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link <%= 'active' if current_page?(rp_worlds_path) %>" aria-current="page" href="<%= rp_worlds_path %>"><%= t('layouts.navbar.worlds') %></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
|
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
|
||||||
<%= render 'layouts/locales' %>
|
<%= render 'layouts/locales' %>
|
||||||
|
|||||||
18
app/views/rp_worlds/index.html.erb
Normal file
18
app/views/rp_worlds/index.html.erb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<h2>Characters list</h2>
|
||||||
|
|
||||||
|
<table class="table table-hover table-dark table-image">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col"><%= t('rp_worlds.world_list.name') %></th>
|
||||||
|
<th scope="col"><%= t('rp_worlds.world_list.description') %></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @rp_worlds.each do |world| %>
|
||||||
|
<tr>
|
||||||
|
<td><%= link_to world.name, world %></td>
|
||||||
|
<td><%= world.description %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
17
app/views/rp_worlds/show.html.erb
Normal file
17
app/views/rp_worlds/show.html.erb
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<div class="row">
|
||||||
|
<div class="col-5">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title"><%= @rp_world.name %></h5>
|
||||||
|
<p class="card-text">Description: <%= @rp_world.description %></p>
|
||||||
|
<p>Membres: </p>
|
||||||
|
<% @rp_world.wow_characters.each do |member| %>
|
||||||
|
<p><%= link_to member.name, member %></p>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-7">
|
||||||
|
<h1>Suite...</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
22
app/workers/wow_creature_families_worker.rb
Normal file
22
app/workers/wow_creature_families_worker.rb
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class WowCreatureFamiliesWorker < WowSidekiqWorker
|
||||||
|
def perform
|
||||||
|
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
|
||||||
|
RBattlenet.set_options(locale: 'all')
|
||||||
|
result = RBattlenet::Wow::CreatureFamily.all
|
||||||
|
|
||||||
|
return unless result.status_code == 200
|
||||||
|
|
||||||
|
result.creature_families.each do |creature_family|
|
||||||
|
wow_creature_family = WowCreatureFamily.find_or_initialize_by(creature_family_id: creature_family.id)
|
||||||
|
|
||||||
|
# Localisation data
|
||||||
|
locales.each do |locale|
|
||||||
|
Mobility.with_locale(locale[0]) { wow_creature_family.name = creature_family.name[locale[1]] }
|
||||||
|
end
|
||||||
|
|
||||||
|
wow_creature_family.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
22
app/workers/wow_creature_types_worker.rb
Normal file
22
app/workers/wow_creature_types_worker.rb
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class WowCreatureTypesWorker < WowSidekiqWorker
|
||||||
|
def perform
|
||||||
|
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
|
||||||
|
RBattlenet.set_options(locale: 'all')
|
||||||
|
result = RBattlenet::Wow::CreatureType.all
|
||||||
|
|
||||||
|
return unless result.status_code == 200
|
||||||
|
|
||||||
|
result.creature_types.each do |creature_type|
|
||||||
|
wow_creature_type = WowCreatureType.find_or_initialize_by(creature_type_id: creature_type.id)
|
||||||
|
|
||||||
|
# Localisation data
|
||||||
|
locales.each do |locale|
|
||||||
|
Mobility.with_locale(locale[0]) { wow_creature_type.name = creature_type.name[locale[1]] }
|
||||||
|
end
|
||||||
|
|
||||||
|
wow_creature_type.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
42
app/workers/wow_creatures_worker.rb
Normal file
42
app/workers/wow_creatures_worker.rb
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class WowCreaturesWorker < WowSidekiqWorker
|
||||||
|
def perform(creature_id, batch_size, keep_going_on)
|
||||||
|
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
|
||||||
|
RBattlenet.set_options(locale: 'all')
|
||||||
|
|
||||||
|
params = {
|
||||||
|
_page: 1,
|
||||||
|
_pageSize: batch_size,
|
||||||
|
orderby: 'id',
|
||||||
|
filters: { id: "[#{creature_id},]" }
|
||||||
|
}
|
||||||
|
result = RBattlenet::Wow::Search::Creature.find(params)
|
||||||
|
|
||||||
|
return unless result.status_code == 200
|
||||||
|
|
||||||
|
result.results&.each do |creature|
|
||||||
|
wow_creature = WowCreature.find_or_initialize_by(creature_id: creature.data.id)
|
||||||
|
|
||||||
|
wow_creature.display_id = creature.data.creature_displays&.first&.id
|
||||||
|
wow_creature.is_tameable = creature.data&.is_tameable
|
||||||
|
|
||||||
|
wow_creature.wow_creature_family = WowCreatureFamily.find_by(creature_family_id: creature.data.family.id) if creature.data.family
|
||||||
|
wow_creature.wow_creature_type = WowCreatureType.find_by(creature_type_id: creature.data.type.id) if creature.data.type
|
||||||
|
|
||||||
|
# Localisation data
|
||||||
|
locales.each do |locale|
|
||||||
|
Mobility.with_locale(locale[0]) do
|
||||||
|
wow_creature.name = creature.data.name[locale[1]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
wow_creature.save
|
||||||
|
end
|
||||||
|
|
||||||
|
# Create a new job for the next batch if keep_going_on is true
|
||||||
|
return unless keep_going_on && !result.results.count.zero?
|
||||||
|
|
||||||
|
WowCreaturesWorker.perform_async(result.results.last.data.id + 1, batch_size, keep_going_on)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -5,3 +5,4 @@ de-de:
|
|||||||
mounts: "Anschlüsse"
|
mounts: "Anschlüsse"
|
||||||
pets: "Maskottchen"
|
pets: "Maskottchen"
|
||||||
reputations: "Reputationen"
|
reputations: "Reputationen"
|
||||||
|
worlds: "Rollenspielwelten"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ en-gb:
|
|||||||
mounts: "Mounts"
|
mounts: "Mounts"
|
||||||
pets: "Pets"
|
pets: "Pets"
|
||||||
reputations: "Reputations"
|
reputations: "Reputations"
|
||||||
|
worlds: "Roleplay Worlds"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ en-us:
|
|||||||
mounts: "Mounts"
|
mounts: "Mounts"
|
||||||
pets: "Pets"
|
pets: "Pets"
|
||||||
reputations: "Reputations"
|
reputations: "Reputations"
|
||||||
|
worlds: "Roleplay Worlds"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ es-es:
|
|||||||
mounts: "Montajes"
|
mounts: "Montajes"
|
||||||
pets: "Mascotas"
|
pets: "Mascotas"
|
||||||
reputations: "Reputaciones"
|
reputations: "Reputaciones"
|
||||||
|
worlds: "Mundos de juegos de rol"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ es-mx:
|
|||||||
mounts: "Montajes"
|
mounts: "Montajes"
|
||||||
pets: "Mascotas"
|
pets: "Mascotas"
|
||||||
reputations: "Reputaciones"
|
reputations: "Reputaciones"
|
||||||
|
worlds: "Mundos de juegos de rol"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ fr-fr:
|
|||||||
mounts: "Montures"
|
mounts: "Montures"
|
||||||
pets: "Mascottes"
|
pets: "Mascottes"
|
||||||
reputations: "Réputations"
|
reputations: "Réputations"
|
||||||
|
worlds: "Mondes de jeu de rôle"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ it:
|
|||||||
mounts: "Monti"
|
mounts: "Monti"
|
||||||
pets: "Mascotti"
|
pets: "Mascotti"
|
||||||
reputations: "Reputazioni"
|
reputations: "Reputazioni"
|
||||||
|
worlds: "Mondi di gioco di ruolo"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ ko:
|
|||||||
mounts: "마운트"
|
mounts: "마운트"
|
||||||
pets: "마스코트"
|
pets: "마스코트"
|
||||||
reputations: "평판"
|
reputations: "평판"
|
||||||
|
worlds: "롤 플레이 세계"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ pt-br:
|
|||||||
mounts: "Montagens"
|
mounts: "Montagens"
|
||||||
pets: "Mascote"
|
pets: "Mascote"
|
||||||
reputations: "Reputações"
|
reputations: "Reputações"
|
||||||
|
worlds: "Mundos de RPG"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ ru-ru:
|
|||||||
mounts: "Крепления"
|
mounts: "Крепления"
|
||||||
pets: "Талисман"
|
pets: "Талисман"
|
||||||
reputations: "Репутации"
|
reputations: "Репутации"
|
||||||
|
worlds: "Ролевые миры"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ zh-cn:
|
|||||||
mounts: "坐骑"
|
mounts: "坐骑"
|
||||||
pets: "吉祥物"
|
pets: "吉祥物"
|
||||||
reputations: "名声"
|
reputations: "名声"
|
||||||
|
worlds: "角色扮演世界"
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ zh-tw:
|
|||||||
mounts: "坐骑"
|
mounts: "坐骑"
|
||||||
pets: "吉祥物"
|
pets: "吉祥物"
|
||||||
reputations: "名声"
|
reputations: "名声"
|
||||||
|
worlds: "角色扮演世界"
|
||||||
|
|||||||
5
config/locales/rp_worlds/de-de.yml
Normal file
5
config/locales/rp_worlds/de-de.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
de-de:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Name"
|
||||||
|
description: "Beschreibung"
|
||||||
5
config/locales/rp_worlds/en-gb.yml
Normal file
5
config/locales/rp_worlds/en-gb.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
en-gb:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Name"
|
||||||
|
description: "Description"
|
||||||
5
config/locales/rp_worlds/en-us.yml
Normal file
5
config/locales/rp_worlds/en-us.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
en-gb:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Name"
|
||||||
|
description: "Description"
|
||||||
5
config/locales/rp_worlds/es-es.yml
Normal file
5
config/locales/rp_worlds/es-es.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
es-es:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Nombre"
|
||||||
|
description: "Descripción"
|
||||||
5
config/locales/rp_worlds/es-mx.yml
Normal file
5
config/locales/rp_worlds/es-mx.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
es-mx:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Nombre"
|
||||||
|
description: "Descripción"
|
||||||
5
config/locales/rp_worlds/fr-fr.yml
Normal file
5
config/locales/rp_worlds/fr-fr.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
en-gb:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Nom"
|
||||||
|
description: "Description"
|
||||||
5
config/locales/rp_worlds/it.yml
Normal file
5
config/locales/rp_worlds/it.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
it:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Nome"
|
||||||
|
description: "Descrizione"
|
||||||
5
config/locales/rp_worlds/ko.yml
Normal file
5
config/locales/rp_worlds/ko.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ko:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "이름"
|
||||||
|
description: "기술"
|
||||||
5
config/locales/rp_worlds/pt-br.yml
Normal file
5
config/locales/rp_worlds/pt-br.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
pt-br:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Sobrenome"
|
||||||
|
description: "Descrição"
|
||||||
5
config/locales/rp_worlds/ru-ru.yml
Normal file
5
config/locales/rp_worlds/ru-ru.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ru-ru:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "Фамилия"
|
||||||
|
description: "Описание"
|
||||||
5
config/locales/rp_worlds/zh-cn.yml
Normal file
5
config/locales/rp_worlds/zh-cn.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
zh-cn:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "姓"
|
||||||
|
description: "描述"
|
||||||
5
config/locales/rp_worlds/zh-tw.yml
Normal file
5
config/locales/rp_worlds/zh-tw.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
zh-tw:
|
||||||
|
rp_worlds:
|
||||||
|
world_list:
|
||||||
|
name: "姓"
|
||||||
|
description: "描述"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
en-gb:
|
fr-fr:
|
||||||
wow_mounts:
|
wow_mounts:
|
||||||
mount_list:
|
mount_list:
|
||||||
name: "Nom"
|
name: "Nom"
|
||||||
|
|||||||
@@ -14,5 +14,6 @@ Rails.application.routes.draw do
|
|||||||
resources :wow_mounts, only: [:index, :show]
|
resources :wow_mounts, only: [:index, :show]
|
||||||
resources :wow_pets, only: [:index, :show]
|
resources :wow_pets, only: [:index, :show]
|
||||||
resources :wow_reputations, only: [:index, :show]
|
resources :wow_reputations, only: [:index, :show]
|
||||||
|
resources :rp_worlds, only: [:index, :show]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
11
db/migrate/20210602152828_create_rp_worlds.rb
Normal file
11
db/migrate/20210602152828_create_rp_worlds.rb
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
class CreateRpWorlds < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
create_table :rp_worlds do |t|
|
||||||
|
t.string :name
|
||||||
|
t.string :description
|
||||||
|
t.belongs_to :user
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
class CreateWowCharacterPlayRpWorlds < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
create_table :wow_character_play_rp_worlds do |t|
|
||||||
|
t.string :status
|
||||||
|
t.string :role
|
||||||
|
t.belongs_to :wow_character
|
||||||
|
t.belongs_to :rp_world
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
13
db/migrate/20210602192708_create_wow_creature_families.rb
Normal file
13
db/migrate/20210602192708_create_wow_creature_families.rb
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
class CreateWowCreatureFamilies < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
create_table :wow_creature_families do |t|
|
||||||
|
t.integer :creature_family_id
|
||||||
|
t.jsonb :name
|
||||||
|
t.integer :media_id
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index :wow_creature_families, :creature_family_id, unique: true
|
||||||
|
end
|
||||||
|
end
|
||||||
12
db/migrate/20210602192916_create_wow_creature_types.rb
Normal file
12
db/migrate/20210602192916_create_wow_creature_types.rb
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
class CreateWowCreatureTypes < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
create_table :wow_creature_types do |t|
|
||||||
|
t.integer :creature_type_id
|
||||||
|
t.jsonb :name
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index :wow_creature_types, :creature_type_id, unique: true
|
||||||
|
end
|
||||||
|
end
|
||||||
16
db/migrate/20210602193023_create_wow_creatures.rb
Normal file
16
db/migrate/20210602193023_create_wow_creatures.rb
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
class CreateWowCreatures < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
create_table :wow_creatures do |t|
|
||||||
|
t.integer :creature_id
|
||||||
|
t.jsonb :name
|
||||||
|
t.boolean :is_tameable
|
||||||
|
t.integer :display_id
|
||||||
|
t.belongs_to :wow_creature_family
|
||||||
|
t.belongs_to :wow_creature_type
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index :wow_creatures, :creature_id, unique: true
|
||||||
|
end
|
||||||
|
end
|
||||||
53
db/schema.rb
generated
53
db/schema.rb
generated
@@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2021_05_30_151735) do
|
ActiveRecord::Schema.define(version: 2021_06_02_193023) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
@@ -49,6 +49,15 @@ ActiveRecord::Schema.define(version: 2021_05_30_151735) do
|
|||||||
t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_text_translations_on_keys", unique: true
|
t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_text_translations_on_keys", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "rp_worlds", force: :cascade do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.string "description"
|
||||||
|
t.bigint "user_id"
|
||||||
|
t.datetime "created_at", precision: 6, null: false
|
||||||
|
t.datetime "updated_at", precision: 6, null: false
|
||||||
|
t.index ["user_id"], name: "index_rp_worlds_on_user_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "user_obtain_wow_mounts", force: :cascade do |t|
|
create_table "user_obtain_wow_mounts", force: :cascade do |t|
|
||||||
t.bigint "user_id"
|
t.bigint "user_id"
|
||||||
t.bigint "wow_mount_id"
|
t.bigint "wow_mount_id"
|
||||||
@@ -95,6 +104,17 @@ ActiveRecord::Schema.define(version: 2021_05_30_151735) do
|
|||||||
t.index ["wow_character_id"], name: "index_wow_character_media_on_wow_character_id"
|
t.index ["wow_character_id"], name: "index_wow_character_media_on_wow_character_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "wow_character_play_rp_worlds", force: :cascade do |t|
|
||||||
|
t.string "status"
|
||||||
|
t.string "role"
|
||||||
|
t.bigint "wow_character_id"
|
||||||
|
t.bigint "rp_world_id"
|
||||||
|
t.datetime "created_at", precision: 6, null: false
|
||||||
|
t.datetime "updated_at", precision: 6, null: false
|
||||||
|
t.index ["rp_world_id"], name: "index_wow_character_play_rp_worlds_on_rp_world_id"
|
||||||
|
t.index ["wow_character_id"], name: "index_wow_character_play_rp_worlds_on_wow_character_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "wow_character_titles", force: :cascade do |t|
|
create_table "wow_character_titles", force: :cascade do |t|
|
||||||
t.jsonb "name"
|
t.jsonb "name"
|
||||||
t.string "href"
|
t.string "href"
|
||||||
@@ -171,6 +191,37 @@ ActiveRecord::Schema.define(version: 2021_05_30_151735) do
|
|||||||
t.index ["covenant_id"], name: "index_wow_covenants_on_covenant_id", unique: true
|
t.index ["covenant_id"], name: "index_wow_covenants_on_covenant_id", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "wow_creature_families", force: :cascade do |t|
|
||||||
|
t.integer "creature_family_id"
|
||||||
|
t.jsonb "name"
|
||||||
|
t.integer "media_id"
|
||||||
|
t.datetime "created_at", precision: 6, null: false
|
||||||
|
t.datetime "updated_at", precision: 6, null: false
|
||||||
|
t.index ["creature_family_id"], name: "index_wow_creature_families_on_creature_family_id", unique: true
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "wow_creature_types", force: :cascade do |t|
|
||||||
|
t.integer "creature_type_id"
|
||||||
|
t.jsonb "name"
|
||||||
|
t.datetime "created_at", precision: 6, null: false
|
||||||
|
t.datetime "updated_at", precision: 6, null: false
|
||||||
|
t.index ["creature_type_id"], name: "index_wow_creature_types_on_creature_type_id", unique: true
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "wow_creatures", force: :cascade do |t|
|
||||||
|
t.integer "creature_id"
|
||||||
|
t.jsonb "name"
|
||||||
|
t.boolean "is_tameable"
|
||||||
|
t.integer "display_id"
|
||||||
|
t.bigint "wow_creature_family_id"
|
||||||
|
t.bigint "wow_creature_type_id"
|
||||||
|
t.datetime "created_at", precision: 6, null: false
|
||||||
|
t.datetime "updated_at", precision: 6, null: false
|
||||||
|
t.index ["creature_id"], name: "index_wow_creatures_on_creature_id", unique: true
|
||||||
|
t.index ["wow_creature_family_id"], name: "index_wow_creatures_on_wow_creature_family_id"
|
||||||
|
t.index ["wow_creature_type_id"], name: "index_wow_creatures_on_wow_creature_type_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "wow_geo_maps", force: :cascade do |t|
|
create_table "wow_geo_maps", force: :cascade do |t|
|
||||||
t.integer "map_id"
|
t.integer "map_id"
|
||||||
t.jsonb "name"
|
t.jsonb "name"
|
||||||
|
|||||||
15
spec/helpers/rp_world_helper_spec.rb
Normal file
15
spec/helpers/rp_world_helper_spec.rb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
# Specs in this file have access to a helper object that includes
|
||||||
|
# the RpWorldHelper. For example:
|
||||||
|
#
|
||||||
|
# describe RpWorldHelper do
|
||||||
|
# describe "string concat" do
|
||||||
|
# it "concats two strings with spaces" do
|
||||||
|
# expect(helper.concat_strings("this","that")).to eq("this that")
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
RSpec.describe RpWorldHelper, type: :helper do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
5
spec/models/rp_world_spec.rb
Normal file
5
spec/models/rp_world_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe RpWorld, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
5
spec/models/wow_character_play_rp_world_spec.rb
Normal file
5
spec/models/wow_character_play_rp_world_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe WowCharacterPlayRpWorld, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
5
spec/models/wow_creature_family_spec.rb
Normal file
5
spec/models/wow_creature_family_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe WowCreatureFamily, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
5
spec/models/wow_creature_spec.rb
Normal file
5
spec/models/wow_creature_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe WowCreature, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
5
spec/models/wow_creature_type_spec.rb
Normal file
5
spec/models/wow_creature_type_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe WowCreatureType, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
7
spec/requests/rp_world_spec.rb
Normal file
7
spec/requests/rp_world_spec.rb
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe "RpWorlds", type: :request do
|
||||||
|
describe "GET /index" do
|
||||||
|
pending "add some examples (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user