Bryar::DataSource::DBI - Retrieve blog posts and comments from database


Bryar documentation Contained in the Bryar distribution.

Index


Code Index:

NAME

Top

Bryar::DataSource::DBI - Retrieve blog posts and comments from database

SYNOPSIS

Top


Bryar documentation Contained in the Bryar distribution.

package Bryar::Comment::DBI;
use base qw(Class::DBI::mysql Bryar::Comment);
__PACKAGE__->set_db('Main','dbi:mysql:bryar');
__PACKAGE__->set_up_table('comments');

package Bryar::Document::DBI;
use base qw(Class::DBI::mysql);
use Class::DBI::AbstractSearch;
__PACKAGE__->set_db('Main','dbi:mysql:bryar');
__PACKAGE__->set_up_table('posts');
__PACKAGE__->has_many('comments' => 'Bryar::Comment::DBI' => 'document');
use Bryar::Document;
push @Bryar::Document::DBI::ISA, "Bryar::Document";

package Bryar::DataSource::DBI;
use Time::Piece;

sub search {
    my ($self, $config, %params) = @_;
    return Bryar::Document::DBI->retrieve($params{id}) if $params{id};

    my %condition = (1 => 1); # To make sure we have something
    $condition{epoch} = {between => [ _epoch2ts($params{since}),
    _epoch2ts($params{before}) ] }        if $params{since};
    $condition{"lower(content)"} = {like => "%". lc $params{content}."%"}
        if $params{content};
    my %limits;
    $limit{limit} = $params{limit} if $params{limit};
    Bryar::Document::DBI->search_where(\%condition, \%limit);
}

sub _epoch2ts { Time::Piece->new(shift)->strftime("%Y%m%d%H%M%S"); }

sub add_comment { 
    my ($self, $config, %params) = @_; 
    Bryar::Document::Comment->new(\%params);
}