DBIx-Squirrel

 view release on metacpan or  search on metacpan

lib/DBIx/Squirrel/it.pm  view on Meta::CPAN

=head1 DESCRIPTION

This module provides a base class for statement iterators. It is usable as
is, but is also subclassed by the L<DBIx::Squirrel::rs> (Results) class.

=cut

use Exporter     ();
use Scalar::Util qw(
    looks_like_number
    weaken
);
use Sub::Name 'subname';
use DBIx::Squirrel::util qw(
    cluckf
    confessf
    callbacks_args
);
use namespace::clean;

use constant E_BAD_STH   => 'Expected a statement handle object';

lib/DBIx/Squirrel/rs.pm  view on Meta::CPAN

it also abstracts away the implementation details of the underlying
statement results. Results are returned as objects of a class that is
dynamically created for each statement results iterator, and column
data is accessed via accessor methods that are also dynamically
created. Thus, the user need not be concerned with whether the
underlying statement results are arrayrefs or hashrefs, or even
what case is used for the column names.

=cut

use Scalar::Util 'weaken';
use Sub::Name 'subname';
use namespace::clean;

BEGIN {
    require DBIx::Squirrel
        unless keys %DBIx::Squirrel::;
    *DBIx::Squirrel::rs::VERSION = *DBIx::Squirrel::VERSION;
    @DBIx::Squirrel::rs::ISA     = 'DBIx::Squirrel::it';
}

lib/DBIx/Squirrel/rs.pm  view on Meta::CPAN

    my $results_fn = $row_class . '::results';
    no strict 'refs';    ## no critic
    unless ( defined &{$results_fn} ) {
        my $resultset_fn = $row_class . '::resultset';
        my $rset_fn      = $row_class . '::rset';
        my $rs_fn        = $row_class . '::rs';
        undef &{$resultset_fn};
        undef &{$rset_fn};
        undef &{$rs_fn};
        *{$resultset_fn} = *{$results_fn} = *{$rset_fn} = *{$rs_fn} = do {
            weaken( my $results = $self );
            subname( $results_fn => sub { $results } );
        };
        @{ $row_class . '::ISA' } = ( $self->result_class );
    }
    return $row_class->new(shift);
}

sub result_class {
    return 'DBIx::Squirrel::rc';
}



( run in 1.418 second using v1.01-cache-2.11-cpan-65fba6d93b7 )