mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
BUGFIX: backup/restore rake tasks weren't working
This commit is contained in:
@ -1,16 +1,27 @@
|
||||
desc 'export the database'
|
||||
task 'export', [:output_filename] => :environment do |t, args|
|
||||
puts 'Starting export...'
|
||||
output_filename = Jobs::Exporter.new.execute( format: :json, filename: args.output_filename )
|
||||
puts 'Export done.'
|
||||
puts "Output file is in: #{output_filename}", ''
|
||||
require "backup_restore"
|
||||
require "export/exporter"
|
||||
|
||||
puts "Starting export..."
|
||||
backup = Export::Exporter.new(Discourse.system_user.id).run
|
||||
if args.output_filename.present?
|
||||
puts "Moving '#{backup}' to '#{filename}'"
|
||||
FileUtils.mv(backup, args.output_filename)
|
||||
backup = args.output_filename
|
||||
end
|
||||
puts "Export done."
|
||||
puts "Output file is in: #{backup}", ""
|
||||
end
|
||||
|
||||
desc 'import from an export file and replace the contents of the current database'
|
||||
task 'import', [:input_filename] => :environment do |t, args|
|
||||
puts 'Starting import...'
|
||||
require "backup_restore"
|
||||
require "import/importer"
|
||||
|
||||
begin
|
||||
Jobs::Importer.new.execute( format: :json, filename: args.input_filename )
|
||||
puts 'Starting import...'
|
||||
Import::Importer.new(Discourse.system_user.id, args.input_filename).run
|
||||
puts 'Import done.'
|
||||
rescue Import::FilenameMissingError
|
||||
puts '', 'The filename argument was missing.', '', 'Usage:', ''
|
||||
@ -23,27 +34,10 @@ end
|
||||
|
||||
desc 'After a successful import, restore the backup tables'
|
||||
task 'import:rollback' => :environment do |t|
|
||||
num_backup_tables = Import::backup_tables_count
|
||||
|
||||
if User.exec_sql("select count(*) as count from information_schema.schemata where schema_name = 'backup'")[0]['count'].to_i <= 0
|
||||
puts "Backup tables don't exist! An import was never performed or the backup tables were dropped.", "Rollback cancelled."
|
||||
elsif num_backup_tables != Export.models_included_in_export.size
|
||||
puts "Expected #{Export.models_included_in_export.size} backup tables, but there are #{num_backup_tables}!", "Rollback cancelled."
|
||||
else
|
||||
puts 'Starting rollback..'
|
||||
Jobs::Importer.new.rollback
|
||||
puts 'Rollback done.'
|
||||
end
|
||||
end
|
||||
|
||||
desc 'After a successful import, drop the backup tables'
|
||||
task 'import:remove_backup' => :environment do |t|
|
||||
if Import::backup_tables_count > 0
|
||||
User.exec_sql("DROP SCHEMA IF EXISTS #{Jobs::Importer::BACKUP_SCHEMA} CASCADE")
|
||||
puts "Backup tables dropped successfully."
|
||||
else
|
||||
puts "No backup found. Nothing was done."
|
||||
end
|
||||
puts 'Rolling back if needed..'
|
||||
require "backup_restore"
|
||||
BackupRestore.rollback!
|
||||
puts 'Done.'
|
||||
end
|
||||
|
||||
desc 'Allow imports'
|
||||
|
Reference in New Issue
Block a user