Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision cff4d333

Von Martin Helmling martin.helmling@octosoft.eu vor mehr als 6 Jahren hinzugefügt

  • ID cff4d3332201b41a504878734475f7c9328a15be
  • Vorgänger c9b4e6bc
  • Nachfolger 944d0062

FileManagement: Konsistenzprüfung zwischen Backend und Datenbank, hier Backend Filesystem

Das script 'scripts/sync_files_from_backend.pl' prüft, ob die Dateien im Backend noch vorhanden sind.
Dabei wird nach der aktuellsten Version gesucht, ist diese vorhanden ist ok,
ist diese nicht vorhanden werden die Versionen davor gesucht und ggf. die Version in der DB heruntergesetzt.
Ist keine Dateimehr vorhanden wird der Datenbankrecord gelöscht.

fixt #275

Unterschiede anzeigen:

SL/File/Backend/Filesystem.pm
111 111
  return 1;
112 112
}
113 113

  
114
sub sync_from_backend {
115
  my ($self, %params) = @_;
116
  my @query = (file_type => $params{file_type});
117
  push @query, (file_name => $params{file_name}) if $params{file_name};
118
  push @query, (mime_type => $params{mime_type}) if $params{mime_type};
119
  push @query, (source    => $params{source})    if $params{source};
120

  
121
  my $sortby = $params{sort_by} || 'itime DESC,file_name ASC';
122

  
123
  my @files = @{ SL::DB::Manager::File->get_all(query => [@query], sort_by => $sortby) };
124
  for (@files) {
125
    $main::lxdebug->message(LXDebug->DEBUG2(), "file id=" . $_->id." version=".$_->backend_data);
126
    my $newversion = $_->backend_data;
127
    for my $version ( reverse 1 .. $_->backend_data ) {
128
      my $path = $self->_filesystem_path($_, $version);
129
      $main::lxdebug->message(LXDebug->DEBUG2(), "path=".$path." exists=".( -f $path?1:0));
130
      last if -f $path;
131
      $newversion = $version - 1;
132
    }
133
    $main::lxdebug->message(LXDebug->DEBUG2(), "newversion=".$newversion." version=".$_->backend_data);
134
    if ( $newversion < $_->backend_data ) {
135
      $_->backend_data($newversion);
136
      $_->save   if $newversion >  0;
137
      $_->delete if $newversion <= 0;
138
    }
139
  }
140

  
141
}
114 142

  
115 143
#
116 144
# internals

Auch abrufbar als: Unified diff