add achievement management
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
class CreateWowAchievementCategories < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :wow_achievement_categories do |t|
|
||||
t.integer :category_id, null: false
|
||||
t.jsonb :name
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :wow_achievement_categories, :category_id, unique: true
|
||||
end
|
||||
end
|
||||
13
db/migrate/20210814100232_create_wow_achievement_criteria.rb
Normal file
13
db/migrate/20210814100232_create_wow_achievement_criteria.rb
Normal file
@@ -0,0 +1,13 @@
|
||||
class CreateWowAchievementCriteria < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :wow_achievement_criteria do |t|
|
||||
t.integer :criterium_id, null: false
|
||||
t.jsonb :description
|
||||
t.integer :amount
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :wow_achievement_criteria, :criterium_id, unique: true
|
||||
end
|
||||
end
|
||||
21
db/migrate/20210814100509_create_wow_achievements.rb
Normal file
21
db/migrate/20210814100509_create_wow_achievements.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class CreateWowAchievements < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :wow_achievements do |t|
|
||||
t.integer :achievement_id, null: false
|
||||
t.jsonb :name
|
||||
t.jsonb :description
|
||||
t.integer :points
|
||||
t.boolean :is_account_wide
|
||||
t.integer :display_order
|
||||
t.string :icon
|
||||
t.belongs_to :wow_achievement_category
|
||||
t.belongs_to :wow_achievement_criterium
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :wow_achievements, :achievement_id, unique: true
|
||||
|
||||
add_reference :wow_achievements, :prerequisite_achievement, foreign_key: { to_table: :wow_achievements }
|
||||
end
|
||||
end
|
||||
5
db/migrate/20210815101616_add_wow_criterium_self_join.rb
Normal file
5
db/migrate/20210815101616_add_wow_criterium_self_join.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class AddWowCriteriumSelfJoin < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_reference :wow_achievement_criteria, :parent_criterium, foreign_key: { to_table: :wow_achievement_criteria }
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
class AddOperatorToWowCriterium < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_column :wow_achievement_criteria, :operator_name, :jsonb
|
||||
add_column :wow_achievement_criteria, :operator_type, :string
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
class AddRewardDescriptionToWowAchievement < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_column :wow_achievements, :reward_description, :jsonb
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
class CreateCompletedWowAchievements < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :completed_wow_achievements do |t|
|
||||
t.datetime :completed_timestamp
|
||||
t.belongs_to :wow_character
|
||||
t.belongs_to :wow_achievement
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
class CreateCompletedWowAchievementCriteria < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :completed_wow_achievement_criteria do |t|
|
||||
t.integer :amount
|
||||
t.boolean :is_completed
|
||||
t.belongs_to :wow_character
|
||||
t.bigint "wow_achievement_criterium_id"
|
||||
t.index ["wow_achievement_criterium_id"], name: "completed_achievement_criteria_on_achievement_criterium_id"
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
66
db/schema.rb
generated
66
db/schema.rb
generated
@@ -10,11 +10,32 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2021_06_02_193023) do
|
||||
ActiveRecord::Schema.define(version: 2021_08_15_130405) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
create_table "completed_wow_achievement_criteria", force: :cascade do |t|
|
||||
t.integer "amount"
|
||||
t.boolean "is_completed"
|
||||
t.bigint "wow_character_id"
|
||||
t.bigint "wow_achievement_criterium_id"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["wow_achievement_criterium_id"], name: "completed_achievement_criteria_on_achievement_criterium_id"
|
||||
t.index ["wow_character_id"], name: "index_completed_wow_achievement_criteria_on_wow_character_id"
|
||||
end
|
||||
|
||||
create_table "completed_wow_achievements", force: :cascade do |t|
|
||||
t.datetime "completed_timestamp"
|
||||
t.bigint "wow_character_id"
|
||||
t.bigint "wow_achievement_id"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["wow_achievement_id"], name: "index_completed_wow_achievements_on_wow_achievement_id"
|
||||
t.index ["wow_character_id"], name: "index_completed_wow_achievements_on_wow_character_id"
|
||||
end
|
||||
|
||||
create_table "learned_wow_pet_abilities", force: :cascade do |t|
|
||||
t.bigint "wow_pet_id"
|
||||
t.bigint "wow_pet_ability_id"
|
||||
@@ -92,6 +113,47 @@ ActiveRecord::Schema.define(version: 2021_06_02_193023) do
|
||||
t.index ["battletag"], name: "index_users_on_battletag", unique: true
|
||||
end
|
||||
|
||||
create_table "wow_achievement_categories", force: :cascade do |t|
|
||||
t.integer "category_id", null: false
|
||||
t.jsonb "name"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["category_id"], name: "index_wow_achievement_categories_on_category_id", unique: true
|
||||
end
|
||||
|
||||
create_table "wow_achievement_criteria", force: :cascade do |t|
|
||||
t.integer "criterium_id", null: false
|
||||
t.jsonb "description"
|
||||
t.integer "amount"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.bigint "parent_criterium_id"
|
||||
t.jsonb "operator_name"
|
||||
t.string "operator_type"
|
||||
t.index ["criterium_id"], name: "index_wow_achievement_criteria_on_criterium_id", unique: true
|
||||
t.index ["parent_criterium_id"], name: "index_wow_achievement_criteria_on_parent_criterium_id"
|
||||
end
|
||||
|
||||
create_table "wow_achievements", force: :cascade do |t|
|
||||
t.integer "achievement_id", null: false
|
||||
t.jsonb "name"
|
||||
t.jsonb "description"
|
||||
t.integer "points"
|
||||
t.boolean "is_account_wide"
|
||||
t.integer "display_order"
|
||||
t.string "icon"
|
||||
t.bigint "wow_achievement_category_id"
|
||||
t.bigint "wow_achievement_criterium_id"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.bigint "prerequisite_achievement_id"
|
||||
t.jsonb "reward_description"
|
||||
t.index ["achievement_id"], name: "index_wow_achievements_on_achievement_id", unique: true
|
||||
t.index ["prerequisite_achievement_id"], name: "index_wow_achievements_on_prerequisite_achievement_id"
|
||||
t.index ["wow_achievement_category_id"], name: "index_wow_achievements_on_wow_achievement_category_id"
|
||||
t.index ["wow_achievement_criterium_id"], name: "index_wow_achievements_on_wow_achievement_criterium_id"
|
||||
end
|
||||
|
||||
create_table "wow_character_media", force: :cascade do |t|
|
||||
t.bigint "wow_character_id"
|
||||
t.string "avatar"
|
||||
@@ -469,6 +531,8 @@ ActiveRecord::Schema.define(version: 2021_06_02_193023) do
|
||||
t.index ["wow_reputation_id"], name: "index_wow_standings_on_wow_reputation_id"
|
||||
end
|
||||
|
||||
add_foreign_key "wow_achievement_criteria", "wow_achievement_criteria", column: "parent_criterium_id"
|
||||
add_foreign_key "wow_achievements", "wow_achievements", column: "prerequisite_achievement_id"
|
||||
add_foreign_key "wow_characters", "wow_geo_positions", column: "bind_position_id"
|
||||
add_foreign_key "wow_characters", "wow_geo_positions", column: "last_position_id"
|
||||
add_foreign_key "wow_reputations", "wow_reputations", column: "meta_wow_reputation_id"
|
||||
|
||||
Reference in New Issue
Block a user