Most of the first third of 02-Film now works :)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / SQL.pm
CommitLineData
ea2e61bf 1package DBIx::Class::SQL;
2
3use strict;
4use warnings;
5
6use base qw/Class::Data::Inheritable/;
7
8use constant COLS => 0;
9use constant FROM => 1;
10use constant COND => 2;
11
12__PACKAGE__->mk_classdata('_sql_statements',
13 {
14 'select' =>
8fe001e1 15 sub { "SELECT ".join(', ', @{$_[COLS]})." FROM $_[FROM] WHERE $_[COND]"; },
ea2e61bf 16 'update' =>
8fe001e1 17 sub { "UPDATE $_[FROM] SET ".join(', ', map { "$_ = ?" } @{$_[COLS]}).
ea2e61bf 18 " WHERE $_[COND]"; },
19 'insert' =>
8fe001e1 20 sub { "INSERT INTO $_[FROM] (".join(', ', @{$_[COLS]}).") VALUES (".
21 join(', ', map { '?' } @{$_[COLS]}).")"; },
ea2e61bf 22 'delete' =>
23 sub { "DELETE FROM $_[FROM] WHERE $_[COND]"; },
24 } );
25
26sub _get_sql {
27 my ($class, $name, $cols, $from, $cond) = @_;
8fe001e1 28 my $sql = $class->_sql_statements->{$name}->($cols, $from, $cond);
29 #warn $sql;
30 return $sql;
ea2e61bf 31}
32
33sub _sql_to_sth {
34 my ($class, $sql) = @_;
35 return $class->_get_dbh->prepare($sql);
36}
37
38sub _get_sth {
39 my $class = shift;
40 return $class->_sql_to_sth($class->_get_sql(@_));
41}
42
431;