Dwimmer
view release on metacpan or search on metacpan
lib/Dwimmer/Feed/DB.pm view on Meta::CPAN
my $id = $self->dbh->last_insert_id('', '', '', '');
main::LOG(" ID: $id");
# only deliver new things
my $NOT_TOO_OLD = 60*60*24;
if ($issued->epoch > time - $NOT_TOO_OLD) {
$self->dbh->do(q{INSERT INTO delivery_queue (channel, entry, site_id) VALUES ('mail', ?, ?)},
{}, $id, $args{site_id});
}
return;
}
sub get_queue {
my ($self, $channel) = @_;
my $sth = $self->dbh->prepare('SELECT * FROM entries, delivery_queue WHERE entries.id=delivery_queue.entry AND channel = ?');
$sth->execute($channel);
my @results;
while (my $h = $sth->fetchrow_hashref) {
push @results, $h;
}
return \@results;
}
sub delete_from_queue {
my ($self, $channel, $id) = @_;
$self->dbh->do('DELETE FROM delivery_queue WHERE channel=? AND entry=?', {}, $channel, $id);
return;
}
sub get_sources {
my ( $self, %opt ) = @_;
my $sql = 'SELECT * FROM sources';
my @fields = sort keys %opt;
if (%opt) {
$sql .= ' WHERE ';
$sql .= join ' AND ', map { "$_=?" } @fields;
}
my $sth = $self->dbh->prepare($sql);
$sth->execute(@opt{@fields});
my @r;
while (my $h = $sth->fetchrow_hashref) {
push @r, $h;
}
return \@r;
}
sub get_source_by_id {
my ( $self, $id ) = @_;
my $sources = $self->get_sources;
my ($s) = grep { $_->{id} eq $id } @$sources;
return $s;
}
sub update_last_fetch {
my ($self, $source_id, $status, $error) = @_;
my $sql = qq{UPDATE sources SET last_fetch_time=?, last_fetch_status=?, last_fetch_error=? WHERE id=?};
$self->dbh->do($sql, undef, time(), $status, $error, $source_id);
return;
}
sub update {
my ($self, $id, $field, $value) = @_;
Carp::croak("Invalid field '$field'")
if $field !~ m{^(feed|comment|twitter|status|title|url)$};
Carp::croak("Invalid value for status '$value'")
if $field eq 'status' and $value !~ m{^(enabled|disabled)$};
my $sql = qq{UPDATE sources SET $field = ? WHERE id=?};
$self->dbh->do($sql, undef, $value, $id);
}
sub set_config {
my ($self, %args) = @_;
foreach my $field (qw(key value site_id)) {
die "Missing $field" if not defined $args{$field};
}
$self->delete_config( %args );
$self->dbh->do('INSERT INTO config (key, value, site_id) VALUES (?, ?, ?)',
undef,
$args{key}, $args{value}, $args{site_id});
return;
}
sub delete_config {
my ($self, %args) = @_;
foreach my $field (qw(key site_id)) {
die "Missing $field" if not defined $args{$field};
}
$self->dbh->do('DELETE FROM config WHERE key=? AND site_id=?', undef, $args{key}, $args{site_id});
return;
}
sub get_config {
my ($self, %args) = @_;
my $sql = 'SELECT * FROM config ';
if (defined $args{site_id}) {
$sql .= 'WHERE site_id=?';
}
$sql .= ' ORDER BY key DESC';
my $sth = $self->dbh->prepare($sql);
defined $args{site_id} ? $sth->execute($args{site_id}) : $sth->execute();;
my @results;
while (my $h = $sth->fetchrow_hashref) {
push @results, $h;
}
return \@results;
}
sub get_config_hash {
my ($self, %args) = @_;
my $sql = 'SELECT * FROM config ';
if (defined $args{site_id}) {
$sql .= 'WHERE site_id=?';
}
$sql .= ' ORDER BY key DESC';
my $sth = $self->dbh->prepare($sql);
defined $args{site_id} ? $sth->execute($args{site_id}) : $sth->execute();
( run in 0.642 second using v1.01-cache-2.11-cpan-98e64b0badf )