1 package DBIx::Class::CDBICompat::ImaDBI;
7 use base qw/Class::Data::Inheritable/;
9 __PACKAGE__->mk_classdata('_transform_sql_handlers' =>
11 'TABLE' => sub { return $_[0]->_table_name },
12 'ESSENTIAL' => sub { join(' ', $_[0]->columns('Essential')) },
16 return $_[0]->_get_dbh;
20 my ($class, @info) = @_;
21 $info[3] = { %{ $info[3] || {}} };
22 $info[3]->{RootClass} = 'DBIx::ContextualFetch';
23 return $class->NEXT::_dbi_connect(@info);
27 return $_[0]->_get_dbh->{Driver}->{Name};
31 my ($class, $name, $sql) = @_;
32 my $table = $class->_table_name;
33 #$sql =~ s/__TABLE__/$table/;
35 *{"${class}::sql_${name}"} =
39 return $class->_sql_to_sth($class->transform_sql($sql, @_));
41 if ($sql =~ /select/i) {
42 my $meth = "sql_${name}";
43 *{"${class}::search_${name}"} =
45 my ($class, @args) = @_;
46 $class->sth_to_objects($class->$meth, \@args);
52 my ($class, $sql, @args) = @_;
53 my $table = $class->_table_name;
54 foreach my $key (keys %{ $class->_transform_sql_handlers }) {
55 my $h = $class->_transform_sql_handlers->{$key};
56 $sql =~ s/__$key(?:\(([^\)]+)\))?__/$h->($class, $1)/eg;
58 return sprintf($sql, @args);