mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
Backup model
This commit is contained in:
parent
0e686aca95
commit
c82f7bb6dc
1 changed files with 37 additions and 0 deletions
37
app/models/backup.rb
Normal file
37
app/models/backup.rb
Normal file
|
@ -0,0 +1,37 @@
|
|||
class Backup
|
||||
include UrlHelper
|
||||
include ActiveModel::SerializerSupport
|
||||
|
||||
attr_reader :filename, :size, :path, :link
|
||||
|
||||
def initialize(filename)
|
||||
@filename = filename
|
||||
@path = File.join(Backup.base_directory, filename)
|
||||
@link = schemaless "#{Discourse.base_url}/admin/backups/#{filename}"
|
||||
@size = File.size(@path)
|
||||
end
|
||||
|
||||
def self.all
|
||||
backups = Dir.glob(File.join(Backup.base_directory, "*.tar.gz"))
|
||||
backups.sort.reverse.map { |backup| Backup.new(File.basename(backup)) }
|
||||
end
|
||||
|
||||
def self.[](filename)
|
||||
path = File.join(Backup.base_directory, filename)
|
||||
if File.exists?(path)
|
||||
Backup.new(filename)
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def self.remove(filename)
|
||||
path = File.join(Backup.base_directory, filename)
|
||||
File.delete(path) if File.exists?(path)
|
||||
end
|
||||
|
||||
def self.base_directory
|
||||
@base_directory ||= File.join(Rails.root, "public", "backups", RailsMultisite::ConnectionManagement.current_db)
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue