Apache2-SQLRequest

 view release on metacpan or  search on metacpan

lib/Apache2/SQLRequest.pm  view on Meta::CPAN

    my $class   = shift;
    my $r       = bless { r => shift };
    my $log     = $r->log;

    my $conf    = Apache2::Module::get_config
        (__PACKAGE__.'::Config', $r->server);
    my $dconf   = Apache2::Module::get_config
        (__PACKAGE__.'::Config', $r->server, $r->per_dir_config);

    map { $r->{$_} ||= defined $dconf->{$_} ? $dconf->{$_} : 
      defined $conf->{$_} ? $conf->{$_} : '' } qw(dsn user password);

    # guarantee the dbi 
    $r->log->debug(sprintf("dsn: '%s', user: '%s', pass: '%s'", 
        map { defined $_ ? $_ : '' } @{$r}{qw(dsn user password)}));
    require DBI;
    $r->log->debug("DBI loaded.");
    my $dbh     = $r->{dbh}  = $DBCONNS{$r->{dsn}} ||= 
    #join(" ", @{$r}{qw(dsn user password)});
        DBI->connect(@{$r}{qw(dsn user password)}) or die 
        "Cannot connect to database with dsn $r->{dsn}: " .  DBI->errstr;
    $r->log->debug("DBI really loaded.");

    # configuration is transient
    $r->{sth} ||= {};
    for my $query (keys %{$dconf->{queries}}) {
        my $c = $dconf->{queries}{$query};
        eval { $r->prepare_query($query, $c->{string}) } or do {
            $log->crit($@);
            return Apache2::Const::SERVER_ERROR;

lib/Apache2/SQLRequest/Config.pm  view on Meta::CPAN

    req_override    => Apache2::Const::OR_ALL,
    errmsg          => 'user',
    cmd_data        => 'user',
};

push @directives => {
    name            => 'DBPassword',
    func            => __PACKAGE__ . '::_set_scalar',
    args_how        => Apache2::Const::TAKE1,
    req_override    => Apache2::Const::OR_ALL,
    errmsg          => 'password',
    cmd_data        => 'password',
};

sub _set_sql_query {
    my ($self, $parms, $qname, $query) = @_;
    $self->{queries}         ||= {};
    $self->{queries}{$qname} ||= {};
    $self->{queries}{$qname}{string} = $query;
}

push @directives => {



( run in 0.872 second using v1.01-cache-2.11-cpan-49f99fa48dc )