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 )