35 lines
1.4 KiB
Ruby
35 lines
1.4 KiB
Ruby
Sequel.migration do
|
|
change do
|
|
# Создаём таблицу карт.
|
|
#
|
|
# `change` здесь удобен тем, что Sequel умеет автоматически
|
|
# откатить `create_table` при rollback.
|
|
create_table :cards do
|
|
primary_key :id
|
|
|
|
# Базовые поля карточки
|
|
column :name, String, null: false
|
|
column :elixir_cost, Integer, null: false
|
|
column :rarity, String
|
|
column :type, String
|
|
|
|
# Уникальность имени карты
|
|
add_unique_constraint :name
|
|
|
|
# Ограничения
|
|
constraint(:valid_rarity, Sequel.lit("rarity IN ('common','rare','epic','legendary','champion', 'evo', 'hero')"))
|
|
constraint(:valid_type, Sequel.lit("type IN ('troop','spell','building')"))
|
|
constraint(:positive_elixir, Sequel.lit("elixir_cost >= 0"))
|
|
|
|
# 0/1 флаг: карточка в актуальной мете или нет.
|
|
# Можно позже заменить на true/false, если решим хранить boolean.
|
|
column :is_meta, Integer, default: 0
|
|
|
|
# Технические таймстемпы для аудита и сортировки
|
|
column :created_at, DateTime, null: false, default: Sequel::CURRENT_TIMESTAMP
|
|
column :updated_at, DateTime, null: false, default: Sequel::CURRENT_TIMESTAMP
|
|
|
|
end
|
|
end
|
|
end
|