--- lib/A3C/Action/StrixSQL.pm 2008/06/15 16:11:17 161 +++ lib/A3C/Action/StrixSQL.pm 2008/06/22 14:55:55 220 @@ -10,28 +10,30 @@ package A3C::Action::StrixSQL; use base qw/A3C::Action Jifty::Action/; -use DBI; +use Strix; use Data::Dump qw/dump/; use Jifty::Param::Schema; use Jifty::Action schema { - param strix => - label is _('Strix site'), + param instance => + label is _('Strix instance'), available are defer { - my $coll = Jifty->app_class('Model','StrixSiteCollection')->new; + my $coll = Jifty->app_class('Model','StrixInstanceCollection')->new; $coll->unlimit; - $coll->order_by( column => 'site' ); + $coll->order_by( column => 'instance' ); [{ display_from => '_site_name', - value_from => 'site', + value_from => 'instance', collection => $coll, }]; }, + is mandatory, render as 'Select'; param sql => label is _('SQL query'), + is mandatory, render as 'Textarea'; }; @@ -48,28 +50,18 @@ return unless ( $self->result->success ); - my $config = Jifty->config->app('strix') or die "need strix config"; - my $database = $config->{database} or die "no strix.database in config"; - - 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; + my $instance = $self->argument_value('instance'); + $self->result->content( 'instance' => $instance ); my $sql = A3C::SQL->new({ query => $self->argument_value('sql'), - dbh => $dbh, + dbh => Strix->dbh( $instance ), + encoding => 'iso-8859-2', }); if ( $sql->count ) { $self->result->content( 'sql' => $sql ); - $self->result->message( _('Got %1 rows', $sql->count) ); + $self->result->message( _('Got %1 rows from %2 in %3 s', $sql->count, $instance, $sql->duration) ); } else { $self->result->error( _('No results') ); }