/[A3C]/lib/A3C/Action/StrixSQL.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 /lib/A3C/Action/StrixSQL.pm

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

revision 161 by dpavlin, Sun Jun 15 16:11:17 2008 UTC revision 220 by dpavlin, Sun Jun 22 14:55:55 2008 UTC
# Line 10  A3C::Action::StrixSQL Line 10  A3C::Action::StrixSQL
10  package A3C::Action::StrixSQL;  package A3C::Action::StrixSQL;
11  use base qw/A3C::Action Jifty::Action/;  use base qw/A3C::Action Jifty::Action/;
12    
13  use DBI;  use Strix;
14  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
15    
16  use Jifty::Param::Schema;  use Jifty::Param::Schema;
17  use Jifty::Action schema {  use Jifty::Action schema {
18    
19          param strix =>          param instance =>
20                  label is _('Strix site'),                  label is _('Strix instance'),
21                  available are defer {                  available are defer {
22                          my $coll = Jifty->app_class('Model','StrixSiteCollection')->new;                          my $coll = Jifty->app_class('Model','StrixInstanceCollection')->new;
23                          $coll->unlimit;                          $coll->unlimit;
24                          $coll->order_by( column => 'site' );                          $coll->order_by( column => 'instance' );
25                          [{                          [{
26                                  display_from => '_site_name',                                  display_from => '_site_name',
27                                  value_from => 'site',                                  value_from => 'instance',
28                                  collection => $coll,                                  collection => $coll,
29                          }];                          }];
30                  },                  },
31                    is mandatory,
32                  render as 'Select';                  render as 'Select';
33    
34          param sql =>          param sql =>
35                  label is _('SQL query'),                  label is _('SQL query'),
36                    is mandatory,
37                  render as 'Textarea';                  render as 'Textarea';
38    
39  };  };
# Line 48  sub take_action { Line 50  sub take_action {
50    
51          return unless ( $self->result->success );          return unless ( $self->result->success );
52    
53          my $config = Jifty->config->app('strix') or die "need strix config";          my $instance = $self->argument_value('instance');
54          my $database = $config->{database} or die "no strix.database in config";          $self->result->content( 'instance' => $instance );
   
         Jifty->log->debug("using config ", dump( $database ));  
   
         my $dsn =  
                 'DBI:Pg:dbname=' . $self->argument_value('strix') .  
                 ';host=' . $database->{host} .  
                 ';port=' . $database->{port};  
   
         Jifty->log->info("psql ", $self->argument_value('strix'), " [$dsn] ", $self->argument_value('sql'));  
   
         my $dbh = DBI->connect( $dsn, $database->{user}, $database->{passwd} ) or die $DBI::errstr;  
55    
56          my $sql = A3C::SQL->new({          my $sql = A3C::SQL->new({
57                  query => $self->argument_value('sql'),                  query => $self->argument_value('sql'),
58                  dbh => $dbh,                  dbh => Strix->dbh( $instance ),
59                    encoding => 'iso-8859-2',
60          });          });
61    
62          if ( $sql->count ) {          if ( $sql->count ) {
63                  $self->result->content( 'sql' => $sql );                  $self->result->content( 'sql' => $sql );
64                  $self->result->message( _('Got %1 rows', $sql->count) );                  $self->result->message( _('Got %1 rows from %2 in %3 s', $sql->count, $instance, $sql->duration) );
65          } else {          } else {
66                  $self->result->error( _('No results') );                  $self->result->error( _('No results') );
67          }          }

Legend:
Removed from v.161  
changed lines
  Added in v.220

  ViewVC Help
Powered by ViewVC 1.1.26