Remove dead code from CDBICompat::ImaDBI
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat / ImaDBI.pm
1 package # hide from PAUSE
2     DBIx::Class::CDBICompat::ImaDBI;
3
4 use strict;
5 use warnings;
6 use DBIx::ContextualFetch;
7 use DBIx::Class::_Util qw(quote_sub perlstring);
8
9 use base qw(Class::Data::Inheritable);
10
11 __PACKAGE__->mk_classdata('sql_transformer_class' =>
12                           'DBIx::Class::CDBICompat::SQLTransformer');
13
14 __PACKAGE__->mk_classdata('_transform_sql_handler_order'
15                             => [ qw/TABLE ESSENTIAL JOIN IDENTIFIER/ ] );
16
17 __PACKAGE__->mk_classdata('_transform_sql_handlers' => {} );
18
19 sub db_Main {
20   return $_[0]->storage->dbh;
21 }
22
23 sub connection {
24   my ($class, @info) = @_;
25   $info[3] = { %{ $info[3] || {}} };
26   $info[3]->{RootClass} = 'DBIx::ContextualFetch';
27   return $class->next::method(@info);
28 }
29
30 sub __driver {
31   return $_[0]->storage->dbh->{Driver}->{Name};
32 }
33
34 sub set_sql {
35   my ($class, $name, $sql) = @_;
36
37   quote_sub "${class}::sql_${name}", sprintf( <<'EOC', perlstring $sql );
38     my $class = shift;
39     return $class->storage->dbh_do(
40       _prepare_sth => $class->transform_sql(%s, @_)
41     );
42 EOC
43
44
45   if ($sql =~ /select/i) {  # FIXME - this should be anchore surely...?
46     quote_sub "${class}::search_${name}", sprintf( <<'EOC', "sql_$name" );
47       my ($class, @args) = @_;
48       $class->sth_to_objects( $class->%s, \@args);
49 EOC
50   }
51 }
52
53 sub sth_to_objects {
54   my ($class, $sth, $execute_args) = @_;
55
56   $sth->execute(@$execute_args);
57
58   my @ret;
59   while (my $row = $sth->fetchrow_hashref) {
60     push(@ret, $class->inflate_result($class->result_source_instance, $row));
61   }
62
63   return @ret;
64 }
65
66 sub transform_sql {
67   my ($class, $sql, @args) = @_;
68
69   my $tclass = $class->sql_transformer_class;
70   $class->ensure_class_loaded($tclass);
71   my $t = $tclass->new($class, $sql, @args);
72
73   return sprintf($t->sql, $t->args);
74 }
75
76 package
77   DBIx::ContextualFetch::st; # HIDE FROM PAUSE THIS IS NOT OUR CLASS
78
79 no warnings 'redefine';
80
81 sub _untaint_execute {
82   my $sth = shift;
83   my $old_value = $sth->{Taint};
84   $sth->{Taint} = 0;
85   my $ret;
86   {
87     no warnings 'uninitialized';
88     $ret = $sth->SUPER::execute(@_);
89   }
90   $sth->{Taint} = $old_value;
91   return $ret;
92 }
93
94 1;