summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/App/BorgRestore/DB.pm74
1 files changed, 16 insertions, 58 deletions
diff --git a/lib/App/BorgRestore/DB.pm b/lib/App/BorgRestore/DB.pm
index e01aee2..38b6c17 100644
--- a/lib/App/BorgRestore/DB.pm
+++ b/lib/App/BorgRestore/DB.pm
@@ -7,13 +7,10 @@ use App::BorgRestore::Helper;
use Data::Dumper;
use DBI;
+use Function::Parameters;
use Log::Any qw($log);
-sub new {
- my $class = shift;
- my $db_path = shift;
- my $cache_size = shift;
-
+method new($class: $db_path, $cache_size) {
my $self = {};
bless $self, $class;
@@ -27,28 +24,20 @@ sub new {
return $self;
}
-sub _open_db {
- my $self = shift;
- my $dbfile = shift;
- my $cache_size = shift;
-
+method _open_db($dbfile, $cache_size) {
$log->debugf("Opening database at %s", $dbfile);
$self->{dbh} = DBI->connect("dbi:SQLite:dbname=$dbfile","","", {RaiseError => 1, Taint => 1});
$self->{dbh}->do("PRAGMA cache_size=-".$cache_size);
$self->{dbh}->do("PRAGMA strict=ON");
}
-sub initialize_db {
- my $self = shift;
-
+method initialize_db() {
$log->debug("Creating initial database");
$self->{dbh}->do('create table `files` (`path` text, primary key (`path`)) without rowid;');
$self->{dbh}->do('create table `archives` (`archive_name` text unique);');
}
-sub get_archive_names {
- my $self = shift;
-
+method get_archive_names() {
my @ret;
my $st = $self->{dbh}->prepare("select `archive_name` from `archives`;");
@@ -59,19 +48,14 @@ sub get_archive_names {
return \@ret;
}
-sub get_archive_row_count {
- my $self = shift;
-
+method get_archive_row_count() {
my $st = $self->{dbh}->prepare("select count(*) count from `files`;");
$st->execute();
my $result = $st->fetchrow_hashref;
return $result->{count};
}
-sub add_archive_name {
- my $self = shift;
- my $archive = shift;
-
+method add_archive_name($archive) {
$archive = App::BorgRestore::Helper::untaint_archive_name($archive);
my $st = $self->{dbh}->prepare('insert into `archives` (`archive_name`) values (?);');
@@ -80,19 +64,12 @@ sub add_archive_name {
$self->_add_column_to_table("files", $archive);
}
-sub _add_column_to_table {
- my $self = shift;
- my $table = shift;
- my $column = shift;
-
+method _add_column_to_table($table, $column) {
my $st = $self->{dbh}->prepare('alter table `'.$table.'` add column `'._prefix_archive_id($column).'` integer;');
$st->execute();
}
-sub remove_archive {
- my $self = shift;
- my $archive = shift;
-
+method remove_archive($archive) {
$archive = App::BorgRestore::Helper::untaint_archive_name($archive);
my $archive_id = $self->get_archive_id($archive);
@@ -123,25 +100,17 @@ sub remove_archive {
$st->execute($archive);
}
-sub _prefix_archive_id {
- my $archive = shift;
-
+fun _prefix_archive_id($archive) {
$archive = App::BorgRestore::Helper::untaint_archive_name($archive);
return 'timestamp-'.$archive;
}
-sub get_archive_id {
- my $self = shift;
- my $archive = shift;
-
+method get_archive_id($archive) {
return _prefix_archive_id($archive);
}
-sub get_archives_for_path {
- my $self = shift;
- my $path = shift;
-
+method get_archives_for_path($path) {
my $st = $self->{dbh}->prepare('select * from `files` where `path` = ?;');
$st->execute(App::BorgRestore::Helper::untaint($path, qr(.*)));
@@ -164,12 +133,7 @@ sub get_archives_for_path {
}
-sub add_path {
- my $self = shift;
- my $archive_id = shift;
- my $path = shift;
- my $time = shift;
-
+method add_path($archive_id, $path, $time) {
my $st = $self->{dbh}->prepare_cached('insert or ignore into `files` (`path`, `'.$archive_id.'`)
values(?, ?)');
$st->execute($path, $time);
@@ -178,21 +142,15 @@ sub add_path {
$st->execute($time, $path);
}
-sub begin_work {
- my $self = shift;
-
+method begin_work() {
$self->{dbh}->begin_work();
}
-sub commit {
- my $self = shift;
-
+method commit() {
$self->{dbh}->commit();
}
-sub vacuum {
- my $self = shift;
-
+method vacuum() {
$self->{dbh}->do("vacuum");
}