Skip to content

Commit

Permalink
Added new versions of {archive,code,db,feed}.pm
Browse files Browse the repository at this point in the history
  • Loading branch information
gnusosa committed Jul 12, 2011
1 parent ad09105 commit 1bde2bd
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 65 deletions.
2 changes: 1 addition & 1 deletion lib/log.pm
Expand Up @@ -6,7 +6,7 @@ use log::code;
use log::db; use log::db;
use log::feed; use log::feed;


our $VERSION = '0.1'; our $VERSION = '0.2';
prefix undef; prefix undef;


# This is a mini-blog engine based on the notes and tips by # This is a mini-blog engine based on the notes and tips by
Expand Down
23 changes: 6 additions & 17 deletions lib/log/archive.pm
@@ -1,28 +1,17 @@
package log::archive; package log::archive;


use Dancer ':syntax'; use Dancer ':syntax';
use log::db; use log::db;
use Time::Piece;

sub _archive_sql {
my $db = _connect_db();
my $sql = 'select datetime, url, title from entries order by id desc';
my $sth = $db->prepare($sql) or die $db->errstr;
$sth->execute or die $sth->errstr;
my $entries = $sth->fetchall_arrayref( {} );
map {
my $date = Time::Piece->strptime( $_->{datetime}, "%Y-%m-%d %H:%M:%S" );
$_->{datetime} = $date->strftime("%b %d %Y");
} @$entries;
return $entries;
}


prefix '/archive'; prefix '/archive';


get '/' => sub { get '/' => sub {
my $list = _archive_sql(); my $table = "entries";
template 'archive', { list => $list }, { layout => 'archive' }; my $list = _list($table);
template 'archive', { list => $list },
{ layout => 'archive' };
}; };


1; 1;



77 changes: 71 additions & 6 deletions lib/log/code.pm
Expand Up @@ -7,12 +7,77 @@ prefix '/code';


get '/' => sub { get '/' => sub {
my $entry = "code"; my $entry = "code";
my $table = "main"; my $table = "main";
my $field = _entry( $table, $entry ); my $field = _entry($table,$entry);
template 'entries' => { my $list_table = "code";
'title' => $field->{title}, my $list = _list($list_table);
'text' => $field->{text}, template 'list' => {
}; 'text' => $field->{text},
'title' => $field->{title},
'root' => $entry,
'list' => $list,
}, { layout => 'code' };
}; };


get '/category' => sub {
my $entry = "category";
my $table = "code";
my $field = _entry($table,$entry);
my $list_table = "category";
my $list = _list($list_table);
my $root = "$table/$entry";
template 'list' => {
'text' => $field->{text},
'title' => $field->{title},
'root' => $root,
'list' => $list,
}, { layout => 'code' };
};

get '/category/:report' => sub {
my $entry = params->{report};
my $table = "category";
my $field = _entry($table,$entry);
template 'entries' => {
'text' => $field->{text},
'title' => $field->{title},
}, { layout => 'code' };
};

get '/category2' => sub {
my $entry = "category2";
my $table = "code";
my $field = _entry($table,$entry);
my $list_table = "category2";
my $list = _list($list_table);
my $root = "$table/$entry";
template 'list' => {
'text' => $field->{text},
'title' => $field->{title},
'root' => $root,
'list' => $list,
}, { layout => 'code' };
};

get '/category2/:entry' => sub {
my $entry = params->{entry};
my $table = "category2";
my $field = _entry($table,$entry);
template 'entries' => {
'text' => $field->{text},
'title' => $field->{title},
}, { layout => 'code' };
};

get '/:entr' => sub {
my $entry = params->{entr};
my $table = "code";
my $field = _entry($table,$entry);
template 'entries' => {
'text' => $field->{text},
'title' => $field->{title},
}, { layout => 'code' };
};


1; 1;
31 changes: 23 additions & 8 deletions lib/log/db.pm
@@ -1,19 +1,34 @@
package log::db; package log::db;


use Dancer::Plugin; use strict;
use Dancer::Plugin;
use Dancer::Plugin::Database; use Dancer::Plugin::Database;
use Time::Piece;


register _connect_db => sub { register _connect_db => sub {
my $db = database(); my $db = database();
return $db; return $db;
}; };


register _entry => sub { register _entry => sub {
my ( $table, $url ) = @_; my ($table, $url) = @_;
my $db = _connect_db(); my $db = _connect_db();
my $sth = $db->quick_select( $table, { url => $url } ) my $sth = $db->quick_select($table, { url => $url})
or die $db->errstr; or die $db->errstr;
return $sth; return $sth;
};

register _list => sub {
my $table = shift;
my $db = _connect_db();
my $sql = qq{select * from $table order by id desc};
my $sth = $db->prepare($sql) or die $db->errstr;
$sth->execute or die $sth->errstr;
my $entries = $sth->fetchall_arrayref({});
map { my $date = Time::Piece->strptime($_->{datetime},"%Y-%m-%d %H:%M:%S");
$_->{datetime} = $date->strftime("%b %d %Y");
} @$entries;
return $entries;
}; };


register_plugin; register_plugin;
Expand Down
60 changes: 27 additions & 33 deletions lib/log/feed.pm
Expand Up @@ -6,51 +6,45 @@ use Dancer::Plugin::Feed;
use DateTime::Format::Strptime; use DateTime::Format::Strptime;


sub _feed_sql { sub _feed_sql {
my $db = _connect_db(); my $db = _connect_db();
my $sql = 'select * from entries order by id desc limit 10'; my $sql = 'select * from entries order by id desc limit 10';
my $sth = $db->prepare($sql) or die $db->errstr; my $sth = $db->prepare($sql) or die $db->errstr;
$sth->execute or die $sth->errstr; $sth->execute or die $sth->errstr;
my $entries = $sth->fetchall_arrayref( {} ); my $entries = $sth->fetchall_arrayref({});
return $entries; return $entries;
} }

sub _get_entries { sub _get_entries {
my $item = _feed_sql(); my $item = _feed_sql();
my $parser = DateTime::Format::Strptime->new( my $parser = DateTime::Format::Strptime->new(
pattern => '%Y-%m-%d %H:%M:%S', pattern => '%Y-%m-%d %H:%M:%S',
locale => 'en_US', locale => 'en_US',
time_zone => 'US/Pacific', time_zone => 'US/Pacific',);
); [ map{
[ my $dt = $parser->parse_datetime($_->{datetime});
map { { title => $_->{title} , link => config->{domain}.$_->{url},
my $dt = $parser->parse_datetime( $_->{datetime} ); content => $_->{text}, author => config->{author},
{ issued => $dt,
title => $_->{title},
link => config->{domain} . $_->{url},
content => $_->{text},
author => config->{author},
issued => $dt,
} }
} @$item } @$item
]; ];
} }


prefix '/feed'; prefix '/feed';


get '/' => sub { get '/' => sub {
my $entry = "feed"; my $entry = "feed";
my $table = "main"; my $table = "main";
my $field = _entry( $table, $entry ); my $field = _entry($table,$entry);
template 'entries' => { template 'entries' => {
'title' => $field->{title}, 'title' => $field->{title},
'text' => $field->{text}, 'text' => $field->{text},
}; };
}; };


get '/:format' => sub { get '/:format' => sub {
my $feed = create_feed( my $feed = create_feed(
format => params->{format}, format => params->{format},
entries => _get_entries() entries => _get_entries()
); );
return $feed; return $feed;
}; };
Expand Down

0 comments on commit 1bde2bd

Please sign in to comment.