Luc Didry 91e078
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
Luc Didry d909b8
package Lufi::DB::Slice::SQLite;
Luc Didry d909b8
use Mojo::Base 'Lufi::DB::Slice';
Luc Didry d909b8
use Lufi::DB::SQLite;
Luc Didry d909b8
use Mojo::Collection 'c';
Luc Didry 91e078
Luc Didry 91e078
has 'record';
Luc Didry 91e078
Luc Didry 91e078
sub new {
Luc Didry 91e078
    my $c = shift;
Luc Didry 91e078
Luc Didry 91e078
    $c = $c->SUPER::new(@_);
Luc Didry 91e078
Luc Didry 91e078
    $c = $c->_slurp if defined $c->record;
Luc Didry 91e078
Luc Didry 91e078
    return $c;
Luc Didry 91e078
}
Luc Didry 91e078
Luc Didry 91e078
sub write {
Luc Didry 91e078
    my $c = shift;
Luc Didry 91e078
Luc Didry 91e078
    if (defined $c->record) {
Luc Didry 91e078
        $c->record->update(
Luc Didry 91e078
            short => $c->short,
Luc Didry 91e078
            j     => $c->j,
Luc Didry 91e078
            path  => $c->path
Luc Didry 91e078
        );
Luc Didry 91e078
    } else {
Luc Didry d909b8
        my $record = Lufi::DB::SQLite::Slices->create(
Luc Didry 91e078
            short => $c->short,
Luc Didry 91e078
            j     => $c->j,
Luc Didry 91e078
            path  => $c->path
Luc Didry 91e078
        );
Luc Didry 91e078
        $c->record($record);
Luc Didry 91e078
    }
Luc Didry 91e078
Luc Didry 91e078
    return $c;
Luc Didry 91e078
}
Luc Didry 91e078
Luc Didry d909b8
sub get_slices_of_file {
Luc Didry d909b8
    my $c     = shift;
Luc Didry d909b8
    my $short = shift;
Luc Didry d909b8
Luc Didry d909b8
    my @slices = Lufi::DB::SQLite::Slices->select('WHERE short = ? ORDER BY j ASC', $short);
Luc Didry d909b8
Luc Didry d909b8
    return c(map { Lufi::DB::Slice->new(app => $c->app, record => $_) } @slices);
Luc Didry d909b8
}
Luc Didry d909b8
Luc Didry 91e078
sub _slurp {
Luc Didry 91e078
    my $c = shift;
Luc Didry 91e078
Luc Didry 91e078
    $c->short($c->record->short) if defined $c->record->short;
Luc Didry 91e078
    $c->j($c->record->j)         if defined $c->record->j;
Luc Didry 91e078
    $c->path($c->record->path)   if defined $c->record->path;
Luc Didry 91e078
Luc Didry 91e078
    return $c;
Luc Didry 91e078
}
Luc Didry 91e078
Luc Didry 91e078
1;