Luc Didry 91e078
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
Luc Didry d909b8
package Lufi::DB::SQLite;
Luc Didry 91e078
use Mojolicious;
Luc Didry d909b8
use Mojo::File;
Luc Didry 91e078
use FindBin qw($Bin);
Luc Didry 91e078
Luc Didry 91e078
BEGIN {
Luc Didry 91e078
    my $m = Mojolicious->new;
Luc Didry d909b8
    my $cfile = Mojo::File->new($Bin, '..' , 'lufi.conf');
Luc Didry d909b8
    if (defined $ENV{MOJO_CONFIG}) {
Luc Didry d909b8
        $cfile = Mojo::File->new($ENV{MOJO_CONFIG});
Luc Didry d909b8
        unless (-e $cfile->to_abs) {
Luc Didry d909b8
            $cfile = Mojo::File->new($Bin, '..', $ENV{MOJO_CONFIG});
Luc Didry d909b8
        }
Luc Didry d909b8
    }
Luc Didry 91e078
    our $config = $m->plugin('Config' =>
Luc Didry 91e078
        {
Luc Didry d909b8
            file    => $cfile->to_abs->to_string,
Luc Didry 91e078
            default => {
Luc Didry 91e078
                db_path => 'lufi.db'
Luc Didry 91e078
            }
Luc Didry 91e078
        }
Luc Didry 91e078
    );
Luc Didry 91e078
}
Luc Didry 91e078
Luc Didry 91e078
# Create database
Luc Didry 91e078
use ORLite {
Luc Didry 91e078
      file    => $config->{db_path},
Luc Didry 91e078
      unicode => 1,
Luc Didry 91e078
      create  => sub {
Luc Didry 91e078
          my $dbh = shift;
Luc Didry 91e078
          $dbh->do(
Luc Didry 91e078
              'CREATE TABLE files (
Luc Didry 91e078
               short                 TEXT PRIMARY KEY,
Luc Didry 91e078
               deleted               INTEGER,
Luc Didry 91e078
               mediatype             TEXT,
Luc Didry 91e078
               filename              TEXT,
Luc Didry 91e078
               filesize              INTEGER,
Luc Didry 91e078
               counter               INTEGER,
Luc Didry 91e078
               delete_at_first_view  INTEGER,
Luc Didry 91e078
               delete_at_day         INTEGER,
Luc Didry 91e078
               created_at            INTEGER,
Luc Didry 91e078
               created_by            TEXT,
Luc Didry 91e078
               last_access_at        INTEGER,
Luc Didry 91e078
               mod_token             TEXT,
Luc Didry 91e078
               nbslices              INTEGER,
Luc Didry 50b1f0
               complete              INTEGER,
Luc Didry 50b1f0
               passwd                TEXT)'
Luc Didry 91e078
          );
Luc Didry 91e078
          $dbh->do(
Luc Didry 91e078
              'CREATE TABLE slices (
Luc Didry 91e078
               short                 TEXT,
Luc Didry 91e078
               j                     INTEGER,
Luc Didry 91e078
               path                  TEXT,
Luc Didry 91e078
               FOREIGN KEY (short) REFERENCES files(short))'
Luc Didry 91e078
          );
Luc Didry 91e078
          $dbh->do(
Luc Didry 91e078
              'CREATE INDEX slices_idx ON slices(short)'
Luc Didry 91e078
          );
Luc Didry 91e078
          return 1;
Luc Didry 91e078
     }
Luc Didry 91e078
};
Luc Didry 91e078
Luc Didry 91e078
1;