On 6 Jul 2009, at 06:30, [email protected] wrote:
In the past, when I had to work with just DBI, I would manually
start a
transaction and commit it at the end if no exceptions occur. In
the case of the latter, I will call a rollback.
This is fairly easy to get wrong - txn_do forces you to have a block
which comprises the transaction scope, or your code won't compile.
It will start a transaction at the start of the block, and commit it
at the end if an exception hasn't been encountered during the
transaction
How do I do it here in Catalyst/DbiX::Class land?
I tried to read up the
http://kobesearch.cpan.org/htdocs/DBIx-Class/DBIx/Class/
Storage.html#txn_do
doc but I can't see how the example can apply to Catalyst.
It says, "$schema->txn_do($coderef)" to get the schema but in
catalyst,
we access the
database tables directly. For example,
$c->model('myAppDB') gets the schema
I'm a bit confused and have looked in a few places. Can anyone please
educate me?
$c->model('myAppDB')->txn_do( sub {
my $rs = $c->model('myAppDB::Table')->search(..);
# Etc etc
die("Rollback") if $foo; # Exceptions cause rollback
# Etc etc
# If you get here, to the end, transaction is committed for you.
});
Can you please supply a doc patch for one or two of the places you
looked to find this information which will explain it more clearly
for the next person?
Cheers
t0m
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/