Initial commit

This commit is contained in:
Yaser
2026-08-13 19:50:53 +03:30
commit 38084458fe
879 changed files with 95198 additions and 0 deletions

138
lib/tasks/export.rake Normal file
View File

@@ -0,0 +1,138 @@
# frozen_string_literal: true
require 'yaml'
require 'csv'
require 'peatio/export'
namespace :export do
desc 'Export all configs to yaml files.'
task configs: :environment do
Rake::Task['export:blockchains'].invoke
Rake::Task['export:currencies'].invoke
Rake::Task['export:markets'].invoke
Rake::Task['export:wallets'].invoke
Rake::Task['export:engines'].invoke
Rake::Task['export:trading_fees'].invoke
end
desc 'Export blockchains config to yaml file.'
task :blockchains, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'config/seed/blockchains.yml')
File.write(args.export_path, Peatio::Export.new.export_blockchains.to_yaml)
end
desc 'Export currencies config to yaml file.'
task :currencies, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'config/seed/currencies_backup.yml')
File.write(args.export_path, Peatio::Export.new.export_currencies.to_yaml)
end
desc 'Export markets config to yaml file.'
task :markets, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'config/seed/markets_backup.yml')
File.write(args.export_path, Peatio::Export.new.export_markets.to_yaml)
end
desc 'Export wallets config to yaml file.'
task :wallets, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'config/seed/wallets_backup.yml')
File.write(args.export_path, Peatio::Export.new.export_wallets.to_yaml)
end
desc 'Export trading fees config to yaml file.'
task :trading_fees, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'config/seed/trading_fees_backup.yml')
File.write(args.export_path, Peatio::Export.new.export_trading_fees.to_yaml)
end
desc 'Export engines to yaml file.'
task :engines, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'config/seed/engines_backup.yml')
File.write(args.export_path, Peatio::Export.new.export_engines.to_yaml)
end
desc 'Export all members to csv file.'
task :users, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'exported_users.csv')
count = 0
errors_count = 0
begin
CSV.open(args.export_path, 'w') do |csv|
csv << %w[uid email level role state]
Member.find_each do |member|
csv << [member.uid, member.email, member.level, member.role, member.state]
count += 1
end
rescue StandardError => e
message = { error: e.message, email: member.email, uid: member.uid }
::Rails.logger.error message
errors_count += 1
end
end
Kernel.puts "Exported #{count} members"
Kernel.puts "Errored #{errors_count}"
end
desc 'Export accounts to csv file.'
task :accounts, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'exported_accounts.csv')
count = 0
errors_count = 0
begin
CSV.open(args.export_path, 'w') do |csv|
csv << %w[uid currency_id main_balance locked_balance]
Account.find_each do |account|
if account.balance.positive? || account.locked.positive?
csv << [account.member.uid, account.currency_id, account.balance, account.locked]
count += 1
end
end
rescue StandardError => e
message = { error: e.message, uid: account.member.uid, currency_id: account.currency_id }
::Rails.logger.error message
errors_count += 1
end
end
Kernel.puts "Exported #{count} accounts"
Kernel.puts "Errored #{errors_count}"
end
desc 'Export addresses to csv file.'
task :addresses, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'exported_addresses.csv')
count = 0
errors_count = 0
begin
CSV.open(args.export_path, 'w') do |csv|
csv << %w[uid wallet_name address secret details]
PaymentAddress.find_each do |address|
wallet = Wallet.find(address.wallet_id)
# We save wallet name instead of id because id can change after export/import migration
csv << [address.member.uid, wallet.name, address.address, address.secret, address.details]
count += 1
rescue StandardError => e
message = { error: e.message, uid: address.member.uid, wallet_name: address.wallet.name }
::Rails.logger.error message
errors_count += 1
end
end
end
Kernel.puts "Exported #{count} addresses"
Kernel.puts "Errored #{errors_count}"
end
desc 'Export configs(blockchains, currencies, wallets, markets, engines) from the database'
task :configs, [:export_path] => [:environment] do |_, args|
args.with_defaults(export_path: 'export_configs.yaml')
ex = Peatio::Export.new
File.write(args.export_path, {
'accounts' => ex.export_accounts,
'blockchains' => ex.export_blockchains,
'currencies' => ex.export_currencies,
'markets' => ex.export_markets,
'wallets' => ex.export_wallets,
'trading_fees' => ex.export_trading_fees,
'engines' => ex.export_engines
}.to_yaml)
end
end