DBIx-FlexibleBinding

 view release on metacpan or  search on metacpan

lib/DBIx/FlexibleBinding.pm  view on Meta::CPAN

use strict;
use warnings;
use MRO::Compat 'c3';

package DBIx::FlexibleBinding;
our $VERSION = '2.0.4'; # VERSION
# ABSTRACT: Greater statement placeholder and data-binding flexibility.
use DBI             ();
use Exporter        ();
use Message::String ();
use Scalar::Util    ( 'reftype', 'blessed', 'weaken' );
use Sub::Util       ( 'set_subname' );
use namespace::clean;
use Params::Callbacks ( 'callback' );
use message << 'EOF';
CRIT_EXP_AREF_AFTER Expected a reference to an ARRAY after argument (%s)
CRIT_UNEXP_ARG      Unexpected argument (%s)
CRIT_EXP_SUB_NAMES  Expected a sub name, or reference to an array of sub names
CRIT_EXP_HANDLE     Expected a %s::database or statement handle 
CRIT_DBI            A DBI error occurred\n%s 
CRIT_PROXY_UNDEF    Handle (%s) undefined 

lib/DBIx/FlexibleBinding.pm  view on Meta::CPAN

    my ( $package, $fqpi, @args ) = @_;
    return $proxies{$fqpi}
        unless @args;
    if ( @args == 1 ) {
        unless ( $args[0] ) {
            undef $proxies{$fqpi};
            return $proxies{$fqpi};
        }
        if ( blessed( $args[0] ) ) {
            if ( $args[0]->isa( "$package\::db" ) ) {
                weaken( $proxies{$fqpi} = $args[0] );
            }
            elsif ( $args[0]->isa( "$package\::st" ) ) {
                weaken( $proxies{$fqpi} = $args[0] );
            }
            else {
                CRIT_EXP_HANDLE( $package );
            }
            return $proxies{$fqpi};
        }
    }
    if ( $args[0] =~ m{^dbi:}i ) {
        $proxies{$fqpi} = $package->connect( @args )
            or CRIT_DBI( $DBI::errstr );



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