summaryrefslogtreecommitdiffstats
path: root/lib/App/BorgRestore.pm
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2018-09-06 18:19:07 +0200
committerFlorian Pritz <bluewind@xinu.at>2018-09-06 18:19:07 +0200
commitb8d19a541782812a4cd02a408344760d83b7b4e0 (patch)
tree35a76837e3cbb16067438d8d94d2399ee6914224 /lib/App/BorgRestore.pm
parent892db03a49333daf7d808395a0a25e81ec2a76ab (diff)
downloadApp-BorgRestore-b8d19a541782812a4cd02a408344760d83b7b4e0.tar.gz
App-BorgRestore-b8d19a541782812a4cd02a408344760d83b7b4e0.tar.xz
Add direct-to-db adding of paths instead of memory only
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'lib/App/BorgRestore.pm')
-rw-r--r--lib/App/BorgRestore.pm14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/App/BorgRestore.pm b/lib/App/BorgRestore.pm
index cad8cb1..caf96e9 100644
--- a/lib/App/BorgRestore.pm
+++ b/lib/App/BorgRestore.pm
@@ -8,6 +8,7 @@ our $VERSION = "3.1.0";
use App::BorgRestore::Borg;
use App::BorgRestore::DB;
use App::BorgRestore::Helper;
+use App::BorgRestore::PathTimeTable::DB;
use App::BorgRestore::PathTimeTable::Memory;
use App::BorgRestore::Settings;
@@ -442,9 +443,15 @@ method _handle_added_archives($borg_archives) {
for my $archive (@$add_archives) {
my $start = Time::HiRes::gettimeofday();
- my $lookuptable = App::BorgRestore::PathTimeTable::Memory->new({db => $self->{db}});
+ my $lookuptable_class = $App::BorgRestore::Settings::prepare_data_in_memory == 1 ? "Memory" : "DB";
+ $log->debugf("Using '%s' class for PathTimeTable", $lookuptable_class);
+ my $lookuptable = "App::BorgRestore::PathTimeTable::$lookuptable_class"->new({db => $self->{db}});
$log->infof("Adding archive %s", $archive);
+ $self->{db}->begin_work;
+ $self->{db}->add_archive_name($archive);
+ my $archive_id = $self->{db}->get_archive_id($archive);
+ $lookuptable->set_archive_id($archive_id);
$self->{borg}->list_archive($archive, sub {
my $line = shift;
@@ -461,10 +468,7 @@ method _handle_added_archives($borg_archives) {
my $borg_time = Time::HiRes::gettimeofday;
- $self->{db}->begin_work;
- $self->{db}->add_archive_name($archive);
- my $archive_id = $self->{db}->get_archive_id($archive);
- $lookuptable->save_nodes($archive_id);
+ $lookuptable->save_nodes();
$self->{db}->commit;
$self->{db}->vacuum;
$self->{db}->verify_cache_fill_rate_ok();