package SetDB::Tuple; =head1 SetDB::Tuple This holds the basic elements of a set. =cut use Data::Dumper; # $Debug::debug{'tuple'} = 1; sub new { my ($class, $elements, $fields, $dbi) = @_; my %self = (); # Initialize with the given elements tie %self, 'SetDB::Tuple', %{$elements}, '_fields', $fields, '_dbi', $dbi; my $self = \%self; bless $self, $class; return $self; } sub set { my $self = shift; my ($key, $val) = @_; print "Tuple: set\n"; $self->STORE($key, $value, 'die'); print "Tuple: end set\n"; #$self->{$key} = $val; return $val; } sub TIEHASH { my ($class, %stuff) = @_; my $self = { %stuff }; bless $self, $class; return $self; } sub FETCH { my $self = shift; my $key = shift; # if this is a subset then make sure we've run it's query #if(ref $self->{$key}) #{ # $self->{$key}->runQuery() # unless ($self->{$key}->{query} and $self->{$key}->{sth}); #} return $self->{$key}; } sub newEntry { my $self = shift; my $entryname = shift; my $subset = $self->{$entryname}; } sub STORE { my $self = shift; my ($key, $val) = @_; $self->{$key} = $val; unless(ref $val) { my ($table, $id) = @{$self->{'_fields'}{$key}}; if ($id) { #print "UPDATE $table SET $key = '$val' WHERE id = $id\n"; $self->{_dbi}->do("UPDATE $table SET $key = ? WHERE id = ?", undef, $val, $id); } else { Debug::print('tuple', "Can't update, no ID\n"); } } return $self; } sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} } sub NEXTKEY { each %{$_[0]} } 1;