[Dbix-class] transaction in a resultset class

shawn wilson ag4ve.us at gmail.com
Thu Apr 11 16:03:11 GMT 2013


On Thu, Apr 11, 2013 at 11:28 AM, Peter Rabbitson <rabbit+dbic at rabbit.us> wrote:
> On Thu, Apr 11, 2013 at 10:58:50AM -0400, shawn wilson wrote:
>> Since txn_* is a part of the schema, how do I have a resultset method
>> always run within one transaction without passing $schema (which just
>> seems kludgy)? Since I can't find anything on google about doing this,
>> I'm guessing it's a bad idea or there's some obviousness I'm missing?
>
> First
>
> http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/ResultSet.pm#result_source
>
> And then
>
> http://search.cpan.org/~ribasushi/DBIx-Class-0.08210/lib/DBIx/Class/ResultSource.pm#schema
>

I don't understand. I've got this resultset class:

package DB::Schema::ResultSet::Page;

use strict;
use warnings;

use base 'DBIx::Class::ResultSet';

sub insert_page_array_ref
{
  my ($self, $pages) = @_;

  foreach my $page (@$pages)
  {
  	next unless $page =~
m|^https?://(?:[\w]+\.)(?:\.?[\w]{2,})+(:[0-9]+)?(?:/[^/]+)+$|;
    $self->create({
      url   => $page,
      stamp => time,
    });
  }
}

1;

How do I wrap that in say a $schema->txn_do(sub{ ... }); ?



More information about the DBIx-Class mailing list