67 lines
No EOL
2 KiB
Perl
67 lines
No EOL
2 KiB
Perl
package FotoStore::DB;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use feature qw(signatures);
|
|
no warnings qw(experimental::signatures);
|
|
|
|
sub new {
|
|
my $class = shift;
|
|
my $db_file = shift;
|
|
|
|
my $dbh = DBI->connect(sprintf('dbi:SQLite:dbname=%s', $db_file),"","");
|
|
my $self = {
|
|
dbh => $dbh,
|
|
};
|
|
bless $self, $class;
|
|
return $self;
|
|
}
|
|
|
|
sub check_user ($self, $nickname, $password) {
|
|
print STDERR "[$nickname][$password]";
|
|
my ($user_id) = $self->{'dbh'}->selectrow_array(q~select user_id from users where nickname=? and password=?~, undef, ($nickname, $password));
|
|
return $user_id;
|
|
}
|
|
|
|
sub get_user ($self, $user_id) {
|
|
if ($user_id =~ /^\d+$/) {
|
|
return $self->_get_user_by_user_id($user_id);
|
|
} else {
|
|
return $self->_get_user_by_username($user_id);
|
|
}
|
|
}
|
|
|
|
sub _get_user_by_user_id ($self, $user_id) {
|
|
my $user_data = $self->{'dbh'}->selectrow_hashref(q~select user_id, nickname, fullname, timestamp from users where user_id=?~, {}, ($user_id));
|
|
return $user_data;
|
|
}
|
|
|
|
sub _get_user_by_username($self, $username) {
|
|
my $user_data = $self->{'dbh'}->selectrow_hashref(q~select user_id, nickname, fullname, timestamp from users where nickname=?~, {}, ($username));
|
|
return $user_data;
|
|
}
|
|
|
|
|
|
sub add_user($self, $username, $password, $fullname) {
|
|
my $rows = $self->{'dbh'}->do(q~insert into users (nickname, password, fullname) values (?, ?, ?)~, undef, ($username, $password, $fullname));
|
|
if ($self->{'dbh'}->errstr) {
|
|
die $self->{'dbh'}->errstr;
|
|
}
|
|
return $rows;
|
|
}
|
|
|
|
|
|
sub add_file($self, $user_id, $filename) {
|
|
my $rows = $self->{'dbh'}->do(q~insert into images (owner_id, file_name) values (?, ?)~, undef, ($user_id, $filename));
|
|
if ($self->{'dbh'}->errstr) {
|
|
die $self->{'dbh'}->errstr;
|
|
}
|
|
return $rows;
|
|
}
|
|
|
|
sub get_files($self, $user_id, $count=20, $start_at=0) {
|
|
return $self->{'dbh'}->selectall_arrayref(q~select * from images where owner_id=? order by created_time desc~, { Slice => {} }, $user_id );
|
|
}
|
|
|
|
1; |