Class: BackupRestore::BackupStore Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/backup_restore/backup_store.rb

Overview

This class is abstract.

Direct Known Subclasses

LocalBackupStore, S3BackupStore

Constant Summary collapse

BackupFileExists =
Class.new(RuntimeError)
StorageError =
Class.new(RuntimeError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create(opts = {}) ⇒ BackupStore

Returns:



10
11
12
13
14
15
16
17
18
19
# File 'lib/backup_restore/backup_store.rb', line 10

def self.create(opts = {})
  case opts[:location] || SiteSetting.backup_location
  when BackupLocationSiteSetting::LOCAL
    require "backup_restore/local_backup_store"
    BackupRestore::LocalBackupStore.new(opts)
  when BackupLocationSiteSetting::S3
    require "backup_restore/s3_backup_store"
    BackupRestore::S3BackupStore.new(opts)
  end
end

Instance Method Details

#delete_file(filename) ⇒ Object



54
55
56
# File 'lib/backup_restore/backup_store.rb', line 54

def delete_file(filename)
  fail NotImplementedError
end

#delete_oldObject



36
37
38
39
40
41
42
43
# File 'lib/backup_restore/backup_store.rb', line 36

def delete_old
  return unless cleanup_allowed?
  return if (backup_files = files).size <= SiteSetting.maximum_backups

  backup_files[SiteSetting.maximum_backups..-1].each { |file| delete_file(file.filename) }

  reset_cache
end

#download_file(filename, destination, failure_message = nil) ⇒ Object



58
59
60
# File 'lib/backup_restore/backup_store.rb', line 58

def download_file(filename, destination, failure_message = nil)
  fail NotImplementedError
end

#file(filename, include_download_source: false) ⇒ BackupFile

Returns:



50
51
52
# File 'lib/backup_restore/backup_store.rb', line 50

def file(filename, include_download_source: false)
  fail NotImplementedError
end

#filesArray<BackupFile>

Returns:



22
23
24
# File 'lib/backup_restore/backup_store.rb', line 22

def files
  @files ||= unsorted_files.sort_by { |file| -file.last_modified.to_i }
end

#generate_upload_url(filename) ⇒ Object



66
67
68
# File 'lib/backup_restore/backup_store.rb', line 66

def generate_upload_url(filename)
  fail NotImplementedError
end

#latest_fileBackupFile

Returns:



27
28
29
# File 'lib/backup_restore/backup_store.rb', line 27

def latest_file
  files.first
end

#remote?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/backup_restore/backup_store.rb', line 45

def remote?
  fail NotImplementedError
end

#reset_cacheObject



31
32
33
34
# File 'lib/backup_restore/backup_store.rb', line 31

def reset_cache
  @files = nil
  Report.clear_cache(:storage_stats)
end

#statsObject



70
71
72
73
74
75
76
77
# File 'lib/backup_restore/backup_store.rb', line 70

def stats
  {
    used_bytes: used_bytes,
    free_bytes: free_bytes,
    count: files.size,
    last_backup_taken_at: latest_file&.last_modified,
  }
end

#upload_file(filename, source_path, content_type) ⇒ Object



62
63
64
# File 'lib/backup_restore/backup_store.rb', line 62

def upload_file(filename, source_path, content_type)
  fail NotImplementedError
end