Apache2-SQLRequest

 view release on metacpan or  search on metacpan

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

package Apache2::SQLRequest::Config;

use warnings FATAL => 'all';
use strict;

use Apache2::Module      ();
use Apache2::CmdParms    ();

use Apache2::Const -compile => 
    qw(TAKE1 TAKE2 TAKE3 ITERATE RSRC_CONF ACCESS_CONF OR_ALL);

my @directives;

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

push @directives => {
    name            => 'DBUser',
    func            => __PACKAGE__ . '::_set_scalar',
    args_how        => Apache2::Const::TAKE1,
    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 => {
    name            => 'SQLQuery',
    func            => __PACKAGE__ . '::_set_sql_query',
    args_how        => Apache2::Const::TAKE2,
    req_override    => Apache2::Const::OR_ALL,
    errmsg          => 'queryname query',
};

sub _add_bind_param {
    my ($self, $parms, $qname, $key, $val) = @_;
    #unless ($parms->path) {
    #    my $srv_cfg = Apache2::Module::get_config($self, $parms->server);
    #    my $query = $srv_cfg->{queries}{$qname};
    #    die "bind parameter defined for nonexistent query $qname." 
    #        unless defined $query;
    #    $query->{params} ||= {};
    #    $query->{params}{$key} = $val;
    #}
    my $query = $self->{queries}{$qname};
    die "bind parameter defined for nonexistent query $qname." 
        unless defined $query;
    $query->{params} ||= {};
    $query->{params}{$key} = $val;
}

push @directives => {
    name            => 'BindParam',
    func            => __PACKAGE__ . '::_add_bind_param',
    args_how        => Apache2::Const::TAKE3,
    req_override    => Apache2::Const::OR_ALL,
    errmsg          => 'queryname key value',
};

Apache2::Module::add(__PACKAGE__, \@directives) if Apache2::Module->can('add');

sub _set_scalar {
    my ($self, $parms, $arg) = @_;
    my $key = $parms->info;
    die "cmd_data must exist" unless defined $key;
    $self->{$key} = $arg;
    # this i don't get, shouldn't it be if, not unless? whatever.
    #unless ($parms->path) {
    #    my $srv_cfg = Apache2::Module::get_config($self, $parms->server);
    #    $srv_cfg->{$key} = $arg;
    #}
}

# XXX: YO: this is a cop-out.
sub _deep_hashref_merge {
    my ($base, $add) = @_;
    if (defined $add) {



( run in 2.481 seconds using v1.01-cache-2.11-cpan-524268b4103 )