On Feb 26, 2007, at 3:46 PM, Jim Spath wrote:
I am somewhat new to DBIx::Class and was wondering if the following
method is the best way to handle counter values. I've tested it,
and it works, but wasn't sure if there was a better way.
==================================================
(all model, table, and column names are made up)
(I'm using DBIx::Class under Catalyst, hence the $c)
==================================================
Seems like you could save yourself a lot of unnecessary logic...
$c->model( 'SomeDB::Counter' )->find_or_create({
counter_name => $counter_name
})->update({
counter => \'counter+1';
});
my $rows = $c->model('SomeDB::Counter')->search({
counter_name => $counter_name,
})->update({
counter => \'counter + 1',
});
if ($rows eq '0E0') {
eval {
$c->model('SomeDB::Counter')->create({
counter_name => $counter_name,
counter => 1,
});
};
if ($@) {
if ($@ =~ /duplicate entry/i) {
$rows = $c->model('SomeDB::Counter')->search({
counter_name => $counter_name,
})->update({
counter => \'counter + 1',
});
if ($rows eq '0E0') {
# couldn't update or insert counter
}
} else {
# unknown error on attempted insert
}
}
}
_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/dbix-
[EMAIL PROTECTED]/
--
Jason Kohles
[EMAIL PROTECTED]
http://www.jasonkohles.com/
"A witty saying proves nothing." -- Voltaire
_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/