Aniki
view release on metacpan or search on metacpan
lib/Aniki.pm view on Meta::CPAN
package Aniki;
use 5.014002;
use namespace::autoclean;
use Mouse v2.4.5;
use Module::Load ();
use Aniki::Filter;
use Aniki::Handler;
use Aniki::Row;
use Aniki::Result::Collection;
use Aniki::Schema;
use Aniki::QueryBuilder;
use Aniki::QueryBuilder::Canonical;
our $VERSION = '1.06';
use SQL::Maker::SQLType qw/sql_type/;
use Class::Inspector;
use Carp qw/croak confess/;
use Try::Tiny;
use Scalar::Util qw/blessed/;
use String::CamelCase qw/camelize/;
use SQL::NamedPlaceholder qw/bind_named/;
sub _noop {}
around BUILDARGS => sub {
my $orig = shift;
my $class = shift;
my %args = (@_ == 1 && ref $_[0] eq 'HASH') ? %{$_[0]} : @_;
if (not exists $args{handler}) {
my $connect_info = delete $args{connect_info} or confess 'Attribute (connect_info) is required';
my $on_connect_do = delete $args{on_connect_do};
my $on_disconnect_do = delete $args{on_disconnect_do};
my $trace_query = delete $args{trace_query} || 0;
my $trace_ignore_if = delete $args{trace_ignore_if} || \&_noop;
$args{handler} = $class->handler_class->new(
connect_info => $connect_info,
on_connect_do => $on_connect_do,
on_disconnect_do => $on_disconnect_do,
trace_query => $trace_query,
trace_ignore_if => $trace_ignore_if,
);
}
return $class->$orig(\%args);
};
has handler => (
is => 'ro',
required => 1,
);
has suppress_row_objects => (
is => 'rw',
default => 0,
);
has suppress_result_objects => (
is => 'rw',
default => 0,
);
( run in 0.578 second using v1.01-cache-2.11-cpan-5a3173703d6 )