/[SQLSession]/trunk/lib/SQLSession/Action/DoSQL.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/SQLSession/Action/DoSQL.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6 by dpavlin, Sat Dec 2 21:17:46 2006 UTC revision 7 by dpavlin, Sat Dec 2 22:30:43 2006 UTC
# Line 11  package SQLSession::Action::DoSQL; Line 11  package SQLSession::Action::DoSQL;
11  use base qw/SQLSession::Action Jifty::Action/;  use base qw/SQLSession::Action Jifty::Action/;
12    
13  use SQLSession::Model::DatabaseCollection;  use SQLSession::Model::DatabaseCollection;
14    use DBI;
15    
16  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
17    
18  use Jifty::Param::Schema;  use Jifty::Param::Schema;
# Line 18  use Jifty::Action schema { Line 20  use Jifty::Action schema {
20    
21          param sql_query =>          param sql_query =>
22                  label is 'SQL',                  label is 'SQL',
23                  is mandatory;                  render as 'textarea',
24                    is mandatory,
25                    ajax validates;
26                    
27          param database =>          param database =>
28                  label is 'Database',                  label is 'Database',
# Line 36  use Jifty::Action schema { Line 40  use Jifty::Action schema {
40    
41  };  };
42    
43    sub sticky_on_success { 1 }
44    sub sticky_on_failure { 1 }
45    
46    =head2 validate_sql_query
47    
48    Can't be empty!
49    
50    =cut
51    
52    sub valdate_sql_query {
53            my $self = shift;
54            my $value = shift || return $self->validation_error( sql_query => 'You need to type in SQL query' );
55            return $self->validation_ok('sql_query');
56    }
57    
58  =head2 take_action  =head2 take_action
59    
60    Execute SQL query on database
61    
62  =cut  =cut
63    
64  sub take_action {  sub take_action {
65      my $self = shift;      my $self = shift;
66            
67      # Custom action code      # Custom action code
       
     $self->report_success if not $self->result->failure;  
       
     return 1;  
 }  
68    
69  =head2 report_success          my $database = $self->argument_value('database');
70            warn "database: $database\n";
71    
72  =cut          my $dbs = SQLSession::Model::DatabaseCollection->new;
73            $dbs->limit( column => 'name', value => $database );
74            my $db = $dbs->first || $self->result->error("Can't find database $database");
75    
76  sub report_success {          my $dbh = DBI->connect( $db->dsn, $db->login, $db->passwd ) ||
77      my $self = shift;                  $self->result->error("can't connect to ", $db->dsn, " as ", $db->login, " ", $DBI::errstr);
78      # Your success message here  
79      $self->result->message('Success');          my $sql = $self->argument_value('sql_query');
80    
81            warn "SQL: $sql\n";
82    
83            my $sth = $dbh->prepare( $sql ) ||
84                    $self->result->error( $dbh->errstr() );
85    
86            $sth->execute() ||
87                    $self->result->error( $sth->errstr() );
88            
89        $self->result->message('Query produced ' . (
90                    $sth->rows == 0 ?       'no results' :
91                    $sth->rows == 1 ?       'single row' :
92                                                            $sth->rows . ' rows'
93            )) if ($sth->rows >= 0);
94    
95        return 1;
96  }  }
97    
98  1;  1;

Legend:
Removed from v.6  
changed lines
  Added in v.7

  ViewVC Help
Powered by ViewVC 1.1.26