Commit | Line | Data |
dbd7896f |
1 | package DBIx::Class::CDBICompat::ImaDBI; |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use NEXT; |
7 | |
8 | sub db_Main { |
9 | return $_[0]->_get_dbh; |
10 | } |
11 | |
12 | sub _dbi_connect { |
13 | my ($class, @info) = @_; |
14 | $info[3] = { %{ $info[3] || {}} }; |
15 | $info[3]->{RootClass} = 'DBIx::ContextualFetch'; |
16 | return $class->NEXT::_dbi_connect(@info); |
17 | } |
18 | |
19 | sub __driver { |
20 | return $_[0]->_get_dbh->{Driver}->{Name}; |
21 | } |
22 | |
a3018bd3 |
23 | sub set_sql { |
24 | my ($class, $name, $sql) = @_; |
25 | my $table = $class->_table_name; |
26 | #$sql =~ s/__TABLE__/$table/; |
27 | no strict 'refs'; |
28 | *{"${class}::sql_${name}"} = |
29 | sub { |
30 | my $sql = $sql; |
31 | my $class = shift; |
510ca912 |
32 | return $class->_sql_to_sth($class->transform_sql($sql, @_)); |
a3018bd3 |
33 | }; |
510ca912 |
34 | if ($sql =~ /select/i) { |
35 | my $meth = "sql_${name}"; |
36 | *{"${class}::search_${name}"} = |
37 | sub { |
38 | my ($class, @args) = @_; |
39 | $class->sth_to_objects($class->$meth, \@args); |
40 | }; |
41 | } |
42 | } |
43 | |
44 | sub transform_sql { |
45 | my ($class, $sql, @args) = @_; |
46 | my $table = $class->_table_name; |
47 | $sql =~ s/__TABLE__/$table/g; |
48 | $sql =~ s/__ESSENTIAL__/join(' ', $class->columns('Essential'))/eg; |
49 | return sprintf($sql, @args); |
a3018bd3 |
50 | } |
51 | |
dbd7896f |
52 | 1; |