Catalog
view release on metacpan or search on metacpan
lib/Catalog/tools/fulcrum.pm view on Meta::CPAN
# dbg("keys = " . join(" ", keys(%$hash_ref)) . "\n", "fulcrum");
push(@result, { %$hash_ref });
}
$stmt->finish();
return (\@result, $ntuples);
}
sub exec_select {
my($self, $sql, $limit) = @_;
my($base) = $self->connect();
dbg("$sql\n", "fulcrum");
my($stmt) = $base->prepare($sql);
error("cannot prepare $sql : " . $base->errstr()) if(!defined($stmt));
$stmt->execute() or error("cannot execute $sql : " . $base->errstr());
my(@result);
my($ntuples) = 0;
my($hash_ref);
while($hash_ref = $stmt->fetchrow_hashref()) {
# dbg("hash_ref = $hash_ref\n", "fulcrum");
# dbg("keys = " . join(" ", keys(%$hash_ref)) . "\n", "fulcrum");
$ntuples++;
push(@result, { %$hash_ref });
}
$stmt->finish();
return (\@result, $ntuples);
}
sub insert {
my($self, $table, %values) = @_;
my($info) = $self->info_table($table);
my($fields) = join(" , ", sort(keys(%values)));
my($values) = join(", ", map {
my($type) = $info->{uc($_)}->{'type'};
if($type eq 'date') {
"DATE '$values{$_}'";
} elsif($type eq 'int') {
"$values{$_}";
} else {
$values{$_} =~ s/\'/\'\'/g;
"'$values{$_}'";
}
} sort(keys(%values)));
my($base) = $self->connect();
my($sql) = "insert into $table ( $fields ) values ( $values )";
dbg("$sql", "fulcrum");
my($stmt) = $base->prepare("$sql");
error("cannot prepare $sql : " . $base->errstr()) if(!defined($stmt));
$stmt->execute() or error("cannot execute $sql: " . $base->errstr());
$self->{'insertid'} = $stmt->{'ful_last_row_id'};
$stmt->finish();
return $self->{'insertid'};
}
sub update {
my($self, $table, $where, %values) = @_;
my($set) = join(", ", map { $values{$_} =~ s/\'/\'\'/g; "$_ = '$values{$_}'"; } sort(keys(%values)));
my($sql) = "update $table set $set where $where";
dbg($sql, "fulcrum");
my($base) = $self->connect();
my($stmt) = $base->prepare("$sql");
error("cannot prepare $sql : " . $base->errstr()) if(!defined($stmt));
$stmt->execute() or error("cannot execute $sql: " . $base->errstr());
$stmt->finish();
}
sub exec {
my($self, $sql) = @_;
my($base) = $self->connect();
if($::opt_fake) {
print "$sql;\n";
} else {
dbg("$sql\n", "fulcrum");
my($stmt) = $base->prepare("$sql");
error("cannot prepare $sql : " . $base->errstr()) if(!defined($stmt));
$stmt->execute() or error("cannot execute $sql: " . $base->errstr());
$self->{'insertid'} = $stmt->{'ful_last_row_id'};
$stmt->finish();
return $self->{'insertid'};
}
}
sub logoff {
my($self) = @_;
if($self->{'connection'}) {
$self->{'connection'}->disconnect();
undef($self->{'connection'});
}
}
1;
# Local Variables: ***
# mode: perl ***
# End: ***
( run in 0.551 second using v1.01-cache-2.11-cpan-98e64b0badf )