- $main::lxdebug->message(LXDebug->DEBUG2(), "del in backend " . $self . " file " . $params{dbfile});
- $main::lxdebug->message(LXDebug->DEBUG2(), "file id=" . ($params{dbfile}->id * 1));
- die "no dbfile" unless $params{dbfile};
- my $backend_data = $params{dbfile}->backend_data;
- $backend_data = 0 if $params{last};
- $backend_data = $params{dbfile}->backend_data-1 if $params{all_but_notlast};
-
- if ($backend_data > 0 ) {
- $main::lxdebug->message(LXDebug->DEBUG2(), "backend_data=" .$backend_data);
- for my $version ( 1..$backend_data) {
- my $file_path = $self->_filesystem_path($params{dbfile},$version);
- $main::lxdebug->message(LXDebug->DEBUG2(), "unlink " .$file_path);
- unlink($file_path);
- }
- if ($params{all_but_notlast}) {
- my $from = $self->_filesystem_path($params{dbfile},$params{dbfile}->backend_data);
- my $to = $self->_filesystem_path($params{dbfile},$params{dbfile}->backend_data);
- die "file not exists" unless -f $from;
- rename($from,$to);
- $params{dbfile}->backend_data(1);
+ die "no dbfile in backend delete" unless $params{dbfile};
+
+ my @versions_to_delete;
+ if ($params{file_version}) {
+ croak "file_version has to be of type SL::DB::FileVersion"
+ unless ref $params{file_version} eq 'SL::DB::FileVersion';
+ @versions_to_delete = ($params{file_version});
+ } else {
+ my @versions = @{$params{dbfile}->file_versions_sorted};
+ if ($params{last}) {
+ my $last = pop @versions;
+ @versions_to_delete = ($last);
+ } elsif ($params{all_but_notlast}) {
+ pop @versions; # remove last
+ @versions_to_delete = @versions;