127 lines
5.7 KiB
Ruby
127 lines
5.7 KiB
Ruby
class RenameMarketFields < ActiveRecord::Migration[5.2]
|
|
def change
|
|
reversible do |dir|
|
|
dir.up do
|
|
# ask_unit, bid_unit
|
|
rename_column :markets, :ask_unit, :base_unit if column_exists?(:markets, :ask_unit)
|
|
rename_column :markets, :bid_unit, :quote_unit if column_exists?(:markets, :bid_unit)
|
|
|
|
# ask_precision, bid_precision
|
|
change_column :markets, :ask_precision, :integer, default: 4, limit: 1, after: :quote_unit if column_exists?(:markets, :ask_precision)
|
|
change_column :markets, :bid_precision, :integer, default: 4, limit: 1, after: :ask_precision if column_exists?(:markets, :bid_precision)
|
|
|
|
rename_column :markets, :ask_precision, :amount_precision if column_exists?(:markets, :ask_precision)
|
|
rename_column :markets, :bid_precision, :price_precision if column_exists?(:markets, :bid_precision)
|
|
|
|
# min_ask_price, max_bid_price
|
|
rename_column :markets, :min_ask_price, :min_price if column_exists?(:markets, :min_ask_price)
|
|
rename_column :markets, :max_bid_price, :max_price if column_exists?(:markets, :max_bid_price)
|
|
|
|
# min_ask_amount, min_bid_amount
|
|
rename_column :markets, :min_ask_amount, :min_amount if column_exists?(:markets, :min_ask_amount)
|
|
remove_column :markets, :min_bid_amount if column_exists?(:markets, :min_bid_amount)
|
|
|
|
if column_exists?(:markets, :enabled)
|
|
add_column :markets, :state, :string, limit: 32, default: :enabled, null: false, after: :position
|
|
Market.find_each do |m|
|
|
m.update_attribute(:state, m.enabled ? :enabled : :disabled)
|
|
end
|
|
remove_column :markets, :enabled
|
|
end
|
|
end
|
|
|
|
dir.down do
|
|
# ask_unit, bid_unit
|
|
rename_column :markets, :base_unit, :ask_unit if column_exists?(:markets, :base_unit)
|
|
rename_column :markets, :quote_unit, :bid_unit if column_exists?(:markets, :quote_unit)
|
|
|
|
# ask_precision, bid_precision
|
|
change_column :markets, :amount_precision, :integer, default: 8, limit: 1, after: :min_amount if column_exists?(:markets, :amount_precision)
|
|
change_column :markets, :price_precision, :integer, default: 8, limit: 1, after: :amount_precision if column_exists?(:markets, :price_precision)
|
|
|
|
rename_column :markets, :amount_precision, :ask_precision if column_exists?(:markets, :amount_precision)
|
|
rename_column :markets, :price_precision, :bid_precision if column_exists?(:markets, :price_precision)
|
|
|
|
# min_ask_price, max_bid_price
|
|
rename_column :markets, :min_price, :min_ask_price if column_exists?(:markets, :min_price)
|
|
rename_column :markets, :max_price, :max_bid_price if column_exists?(:markets, :max_price)
|
|
|
|
# min_ask_amount, min_bid_amount
|
|
rename_column :markets, :min_amount, :min_ask_amount if column_exists?(:markets, :min_amount)
|
|
unless column_exists?(:markets, :min_bid_amount)
|
|
add_column :markets, :min_bid_amount, :decimal,
|
|
precision: 32, scale: 16, default: 0.0, null: false, after: :min_ask_amount
|
|
end
|
|
|
|
if column_exists?(:markets, :state)
|
|
add_column :markets, :enabled, :boolean, default: true, null: false, after: :position
|
|
Market.find_each do |m|
|
|
m.update_attribute(:enabled, m.state == 'enabled')
|
|
end
|
|
remove_column :markets, :state
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# == BEFORE ==
|
|
# == Schema Information
|
|
# Schema version: 20190116140939
|
|
#
|
|
# Table name: markets
|
|
#
|
|
# id :string(20) not null, primary key
|
|
# ask_unit :string(10) not null
|
|
# bid_unit :string(10) not null
|
|
# ask_fee :decimal(17, 16) default(0.0), not null
|
|
# bid_fee :decimal(17, 16) default(0.0), not null
|
|
# min_ask_price :decimal(32, 16) default(0.0), not null
|
|
# max_bid_price :decimal(32, 16) default(0.0), not null
|
|
# min_ask_amount :decimal(32, 16) default(0.0), not null
|
|
# min_bid_amount :decimal(32, 16) default(0.0), not null
|
|
# ask_precision :integer default(8), not null
|
|
# bid_precision :integer default(8), not null
|
|
# position :integer default(0), not null
|
|
# enabled :boolean default(TRUE), not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_markets_on_ask_unit (ask_unit)
|
|
# index_markets_on_ask_unit_and_bid_unit (ask_unit,bid_unit) UNIQUE
|
|
# index_markets_on_bid_unit (bid_unit)
|
|
# index_markets_on_enabled (enabled)
|
|
# index_markets_on_position (position)
|
|
#
|
|
|
|
# == AFTER ==
|
|
# == Schema Information
|
|
# Schema version: 20190624102330
|
|
#
|
|
# Table name: markets
|
|
#
|
|
# id :string(20) not null, primary key
|
|
# base_unit :string(10) not null
|
|
# quote_unit :string(10) not null
|
|
# amount_precision :integer default(4), not null
|
|
# price_precision :integer default(4), not null
|
|
# ask_fee :decimal(17, 16) default(0.0), not null
|
|
# bid_fee :decimal(17, 16) default(0.0), not null
|
|
# min_price :decimal(32, 16) default(0.0), not null
|
|
# max_price :decimal(32, 16) default(0.0), not null
|
|
# min_amount :decimal(32, 16) default(0.0), not null
|
|
# position :integer default(0), not null
|
|
# state :string(32) default("enabled"), not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_markets_on_base_unit (base_unit)
|
|
# index_markets_on_base_unit_and_quote_unit (base_unit,quote_unit) UNIQUE
|
|
# index_markets_on_position (position)
|
|
# index_markets_on_quote_unit (quote_unit)
|
|
#
|