--- nfo/perl/libs/Data/Storage/Handler/DBI.pm 2003/04/08 23:06:45 1.13 +++ nfo/perl/libs/Data/Storage/Handler/DBI.pm 2003/04/09 06:06:04 1.14 @@ -1,8 +1,11 @@ ################################# # -# $Id: DBI.pm,v 1.13 2003/04/08 23:06:45 joko Exp $ +# $Id: DBI.pm,v 1.14 2003/04/09 06:06:04 joko Exp $ # # $Log: DBI.pm,v $ +# Revision 1.14 2003/04/09 06:06:04 joko +# sendQuery now is capable of doing 'SELECT'- or 'INSERT'-queries +# # Revision 1.13 2003/04/08 23:06:45 joko # renamed core database helper functions # @@ -201,6 +204,14 @@ $logger->debug( __PACKAGE__ . "->sendQuery" ); + my $action = $query->{options}->{action}; + $action ||= 'load'; + + if (my $guid = $query->{options}->{GUID}) { + $query->{criterias} = [ { key => 'guid', op => 'eq', val => $guid } ]; + } + + # check criterias (load & save) #my $sql = "SELECT cs FROM $self->{metainfo}->{$descent}->{node} WHERE $self->{metainfo}->{$descent}->{IdentProvider}->{arg}='$self->{entry}->{source}->{ident}';"; #my $result = $self->{metainfo}->{$descent}->{storage}->sendCommand($sql); my @crits; @@ -209,12 +220,26 @@ $op = '=' if lc $_->{op} eq 'eq'; push @crits, "$_->{key}$op'$_->{val}'"; } - my $subnodes = {}; - map { $subnodes->{$_}++ } @{$query->{subnodes}}; # HACK: this is hardcoded ;( expand possibilities! my $crit = join(' AND ', @crits); - my $sql = hash2sql($query->{node}, $subnodes, 'SELECT', $crit); - return $self->sendCommand($sql); + + # check subnodes (load) + my $subnodes = {}; + map { $subnodes->{$_}++ } @{$query->{subnodes}}; + + # check payload (save) + #print Dumper($query->{payload}); + #$subnodes ||= $query->{payload}; + + # dispatch action + if ($action eq 'load') { + my $sql = hash2sql($query->{node}, $subnodes, 'SELECT', $crit); + return $self->sendCommand($sql); + } elsif ($action eq 'save') { + my $sql = hash2sql($query->{node}, $query->{payload}, 'UPDATE', $crit); + $self->sendCommand($sql); + } + } sub eraseAll {