X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FStorage%2FDBI.pm;h=da5c89ea1cbe69a5e88f9e73ebd6ae5a722ccfb0;hb=350896ee7e5b32e5f965e84f445df47113573a72;hp=b86f8096b41351120ece3d8cfc4540bdbaadc8c3;hpb=19b913ce4f25ce69bd69b4bf4a95ca99d4aa007e;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Storage/DBI.pm b/lib/DBM/Deep/Storage/DBI.pm index b86f809..da5c89e 100644 --- a/lib/DBM/Deep/Storage/DBI.pm +++ b/lib/DBM/Deep/Storage/DBI.pm @@ -98,22 +98,16 @@ sub write_to { my $self = shift; my ($table, $id, %args) = @_; - if ( $id ) { - $self->{dbh}->do( - "DELETE FROM $table WHERE id = $id", - ); - } - my @keys = keys %args; my $sql = - "INSERT INTO $table ( `id`, " + "REPLACE INTO $table ( `id`, " . join( ',', map { "`$_`" } @keys ) . ") VALUES (" . join( ',', ('?') x (@keys + 1) ) . ")"; - warn $sql. $/; - no warnings; - warn "@args{@keys}\n"; +#warn $sql. $/; +#no warnings; +#warn "@args{@keys}\n"; $self->{dbh}->do( $sql, undef, $id, @args{@keys} ); return $self->{dbh}{mysql_insertid}; @@ -121,10 +115,15 @@ sub write_to { sub delete_from { my $self = shift; - my ($table, $id) = @_; + my ($table, $cond) = @_; + + $cond = { id => $cond } unless ref $cond; + + my @keys = keys %$cond; + my $where = join ' AND ', map { "`$_` = ?" } @keys; $self->{dbh}->do( - "DELETE FROM $table WHERE id = ?", undef, $id, + "DELETE FROM $table WHERE $where", undef, @{$cond}{@keys}, ); }