Blame lib/Lufi/DB/SQLite.pm
|
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;
|