Revision cff4d333
Von Martin Helmling martin.helmling@octosoft.eu vor mehr als 6 Jahren hinzugefügt
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
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