[Omaha.pm] Catalyst - database access syntax

Jay Hannah jay at jays.net
Sat Aug 16 13:44:52 PDT 2008


For the programmers out there...

Ryan's talk covered database syntax in ColdFusion, which made me
regret that I didn't demo that too. Here's the default database
manipulation syntax in Catalyst + Template Toolkit, if you're
interested.

To add a list of Twitter accounts to the little app I demo'd you can
throw this into your HTML (the tags are Template Toolkit syntax):

------------------
<table border=1>
<tr><th>Twitter ID</th><th>Name</th></tr>
[% FOREACH followers IN
c.model('BarCampOmaha::Model::DB::Followers').all %]
   <tr>
   <td>[% followers.twitter_id %]</td>
   <td>[% followers.name %]</td>
   <td><a href="/twitter/delete?twitter_id=[% followers.twitter_id
%]">delete</a></td>
   </tr>
[% END %]
</table>

<form action="/twitter/add">
<input type="text" name="twitter_id">
<input type="text" name="name">
<input type="submit" value="Add me">
</form>
------------------

This reads out of a little sqlite database on my laptop, but could be
any data source. Now we need two new Actions: a delete and an add.

So we throw this into Controller/Twitter

------------
sub add : Path("add") {
    my ( $self, $c ) = @_;

    $c->model('BarCampOmaha::Model::DB::Followers')->create({
       twitter_id => $c->req->param('twitter_id'),
       name       => $c->req->param('name'),
    });
    $c->res->redirect('/barcampomaha/homepage');
}

sub delete : Path("delete") {
    my ( $self, $c ) = @_;

    $c->model('BarCampOmaha::Model::DB::Followers')->search({
       twitter_id => $c->req->param('twitter_id'),
    })->delete_all;
    $c->res->redirect('/barcampomaha/homepage');
}
------------

All done.

Cheers,

j
Omaha Perl Mongers: http://omaha.pm.org


More information about the Omaha-pm mailing list