Apache2-Translation
view release on metacpan or search on metacpan
lib/Apache2/Translation/DB.pm view on Meta::CPAN
ORDER BY $key_col ASC
SQL
$stmt=$I->_dbh->prepare_cached( $sql );
$stmt->execute;
return @{$stmt->fetchall_arrayref||[]};
}
sub list_keys_and_uris {
my $I=shift;
my ($table_name,$key_col,$uri_col)=map {$I->$_} qw/table key uri/;
my ($sql, $stmt, @args);
if( @_ and length $_[0] ) {
$sql=<<"SQL";
SELECT DISTINCT $key_col, $uri_col
FROM $table_name
WHERE $key_col=?
ORDER BY $key_col ASC, $uri_col ASC
SQL
push @args, $_[0];
} else {
$sql=<<"SQL";
SELECT DISTINCT $key_col, $uri_col
FROM $table_name
ORDER BY $key_col ASC, $uri_col ASC
SQL
}
$stmt=$I->_dbh->prepare_cached( $sql );
$stmt->execute( @args );
return @{$stmt->fetchall_arrayref||[]};
}
sub begin {
my $I=shift;
$I->_dbh->begin_work;
}
sub commit {
my $I=shift;
my ($table_name,$col_name)=map {$I->$_} qw/cachetbl cachecol/;
my $stmt;
my $sql=<<"SQL";
UPDATE $table_name
SET $col_name=$col_name+1
SQL
$stmt=$I->_dbh->prepare_cached( $sql );
$stmt->execute;
$stmt->finish;
$I->_dbh->commit;
}
sub rollback {
my $I=shift;
$I->_dbh->rollback;
}
sub update {
my $I=shift;
my $old=shift;
my $new=shift;
my ($table_name,$key_col,$uri_col,$block_col,$order_col,$action_col,
$id_col, $notes_col)=
map {$I->$_} qw/table key uri block order action id notes/;
my ($stmt, $sql);
if( length $notes_col ) {
$sql=<<"SQL";
UPDATE $table_name
SET $key_col=?,
$uri_col=?,
$block_col=?,
$order_col=?,
$action_col=?,
$notes_col=?
WHERE $key_col=?
AND $uri_col=?
AND $block_col=?
AND $order_col=?
AND $id_col=?
SQL
$stmt=$I->_dbh->prepare_cached( $sql );
my $rc=$stmt->execute( @{$new}[0..5], @{$old}[0..4] );
$stmt->finish;
return $rc;
} else {
$sql=<<"SQL";
UPDATE $table_name
SET $key_col=?,
$uri_col=?,
$block_col=?,
$order_col=?,
$action_col=?
WHERE $key_col=?
AND $uri_col=?
AND $block_col=?
AND $order_col=?
AND $id_col=?
SQL
$stmt=$I->_dbh->prepare_cached( $sql );
my $rc=$stmt->execute( @{$new}[0..4], @{$old}[0..4] );
$stmt->finish;
return $rc;
}
}
sub insert {
my $I=shift;
my $new=shift;
my ($table_name,$key_col,$uri_col,$block_col,$order_col,$action_col,
$id_col, $notes_col)=
map {$I->$_} qw/table key uri block order action id notes/;
my ($stmt, $sql);
( run in 0.563 second using v1.01-cache-2.11-cpan-39bf76dae61 )