Files
lutim/lib/Lutim/DB/Image/SQLite.pm
T
Luc Didry 179def2d3e Work on #42: cleanbdd command
This commit is dedicated to Schoumi, who is supporting me on Tipeee.
Many thanks :-)
2017-05-27 15:53:51 +02:00

127 lines
2.7 KiB
Perl

# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
package Lutim::DB::Image::SQLite;
use Mojo::Base 'Lutim::DB::Image';
use Lutim::DB::SQLite;
use Mojo::Collection 'c';
has 'record';
sub new {
my $c = shift;
$c = $c->SUPER::new(@_);
$c = $c->_slurp if ($c->short);
return $c;
}
sub clean_ips_until {
my $c = shift;
my $time = shift;
Lutim::DB::SQLite->do(
'UPDATE lutim SET created_by = "" WHERE path IS NOT NULL AND created_at < ?',
{},
$time
);
return $c;
}
sub get_no_longer_viewed_files {
my $c = shift;
my $time = shift;
my @images;
my @records = c(LutimModel::Lutim->select('WHERE enabled = 1 AND last_access_at < ?', $time));
for my $e (@records) {
my $i = Lutim::DB::Image->new(app => $c->app);
$i->record($e);
$i->_slurp;
push @images, $i;
}
return c(@images);
}
sub get_images_to_clean {
my $c = shift;
my @images;
my @records = c(LutimModel::Lutim->select('WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', time()));
for my $e (@records) {
my $i = Lutim::DB::Image->new(app => $c->app);
$i->record($e);
$i->_slurp;
push @images, $i;
}
return c(@images);
}
sub get_50_oldest {
my $c = shift;
my @images;
my @records = c(Lutim::DB::SQLite::Lutim->select('WHERE path IS NOT NULL AND enabled = 1 ORDER BY created_at ASC LIMIT 50'));
for my $e (@records) {
my $i = Lutim::DB::Image->new(app => $c->app);
$i->record($e);
$i->_slurp;
push @images, $i;
}
return c(@images);
}
sub disable {
my $c = shift;
$c->record->update(enabled => 0);
$c->enabled(0);
return $c;
}
sub _slurp {
my $c = shift;
my @urls;
if ($c->record) {
@urls = ($c->record);
} elsif ($c->short) {
@urls = Lutim::DB::SQLite::Lutim->select('WHERE short = ?', $c->short);
}
if (scalar @urls) {
$c->short($urls[0]->short);
$c->path($urls[0]->path);
$c->footprint($urls[0]->footprint);
$c->enabled($urls[0]->enabled);
$c->mediatype($urls[0]->mediatype);
$c->filename($urls[0]->filename);
$c->counter($urls[0]->counter);
$c->delete_at_first_view($urls[0]->delete_at_first_view);
$c->delete_at_day($urls[0]->delete_at_day);
$c->created_at($urls[0]->created_at);
$c->created_by($urls[0]->created_by);
$c->last_access_at($urls[0]->last_access_at);
$c->mod_token($urls[0]->mod_token);
$c->width($urls[0]->width);
$c->height($urls[0]->height);
$c->record($urls[0]) unless $c->record;
}
return $c;
}
1;