Initial commit
This commit is contained in:
143
lib/tasks/seed.rake
Normal file
143
lib/tasks/seed.rake
Normal file
@@ -0,0 +1,143 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
require 'yaml'
|
||||
|
||||
namespace :seed do
|
||||
desc 'Adds missing accounts to database defined at config/seed/accounts.yml.'
|
||||
task accounts: :environment do
|
||||
Operations::Account.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/accounts.yml')).each do |hash|
|
||||
next if Operations::Account.exists?(code: hash.fetch('code'))
|
||||
Operations::Account.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: Deprecate seed tasks in favour of import:configs
|
||||
desc 'Adds missing currencies to database defined at config/seed/currencies.yml.'
|
||||
task currencies: :environment do
|
||||
Currency.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/currencies.yml')).each do |hash|
|
||||
next if Currency.exists?(id: hash.fetch('id'))
|
||||
Currency.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing blockchains to database defined at config/seed/blockchains.yml.'
|
||||
task blockchains: :environment do
|
||||
Blockchain.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/blockchains.yml')).each do |hash|
|
||||
next if Blockchain.exists?(key: hash.fetch('key'))
|
||||
Blockchain.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing engines to database defined at config/seed/engines.yml.'
|
||||
task engines: :environment do
|
||||
Engine.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/engines.yml')).each do |hash|
|
||||
next if Engine.exists?(name: hash.fetch('name'))
|
||||
Engine.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing markets to database defined at config/seed/markets.yml.'
|
||||
task markets: :environment do
|
||||
Market.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/markets.yml'))
|
||||
.map(&:symbolize_keys)
|
||||
.each do |hash|
|
||||
next if Market.exists?(id: hash.fetch(:id))
|
||||
# For compatibility with old markets.yml
|
||||
# If state is not defined set it from enabled.
|
||||
enabled = hash.delete(:enabled)
|
||||
hash[:state] ||= enabled ? :enabled : :disabled
|
||||
|
||||
# For compatibility with old markets.yml we keep legacy-new keys mapping.
|
||||
# New key value has higher priority than legacy.
|
||||
legacy_keys_mappings = { ask_unit: :base_unit,
|
||||
bid_unit: :quote_unit,
|
||||
ask_precision: :amount_precision,
|
||||
bid_precision: :price_precision,
|
||||
min_ask_price: :min_price,
|
||||
max_bid_price: :max_price,
|
||||
min_ask_amount: :min_amount,
|
||||
min_bid_amount: :min_amount }
|
||||
|
||||
legacy_keys_mappings.each do |old_key, new_key|
|
||||
legacy_key_value = hash.delete(old_key)
|
||||
hash[new_key] ||= legacy_key_value
|
||||
end
|
||||
|
||||
# Select engine with provided name
|
||||
engine = Engine.find_by(name: hash[:engine_name])
|
||||
if engine.present?
|
||||
hash.delete :engine_name
|
||||
hash[:engine_id] = engine.id
|
||||
Market.create!(hash)
|
||||
else
|
||||
Rails.logger.error "Engine doesn't exist"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing wallets to database defined at config/seed/wallets.yml.'
|
||||
task wallets: :environment do
|
||||
Wallet.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/wallets.yml')).each do |hash|
|
||||
next if Wallet.exists?(name: hash.fetch('name'))
|
||||
if hash['currency_ids'].is_a?(String)
|
||||
hash['currency_ids'] = hash['currency_ids'].split(',')
|
||||
end
|
||||
Wallet.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing trading_fees to database defined at config/seed/trading_fees.yml.'
|
||||
task trading_fees: :environment do
|
||||
TradingFee.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/trading_fees.yml')).each do |hash|
|
||||
next if TradingFee.exists?(market_id: hash.fetch('market_id'), group: hash.fetch('group'))
|
||||
TradingFee.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing whitelisted_smart_contracts to database defined at config/seed/whitelisted_smart_contracts.yml.'
|
||||
task whitelisted_smart_contracts: :environment do
|
||||
WhitelistedSmartContract.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/whitelisted_smart_contracts.yml')).each do |hash|
|
||||
next if WhitelistedSmartContract.exists?(address: hash.fetch('address'), blockchain_key: hash.fetch('blockchain_key'))
|
||||
|
||||
WhitelistedSmartContract.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds missing member for test'
|
||||
task members: :environment do
|
||||
Member.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/members.yml')).each do |hash|
|
||||
next if Member.exists?(id: hash.fetch('id'))
|
||||
|
||||
Member.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Adds deposit limits'
|
||||
task deposit_limits: :environment do
|
||||
::DepositLimit.transaction do
|
||||
YAML.load_file(Rails.root.join('config/seed/deposit_limit.yml')).each do |hash|
|
||||
next if ::DepositLimit.exists?(id: hash.fetch('id'))
|
||||
|
||||
::DepositLimit.create!(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user