/usr/local/CPAN/DBIx-Romani/DBIx/Romani/Query/Insert.pm



package DBIx::Romani::Query::Insert;

use strict;

sub new
{
	my $class = shift;
	my $args  = shift;

	my $into;

	if ( ref($args) eq 'HASH' )
	{
		$into = $args->{into};
	}
	else
	{
		$into = $args;
	}
	
	my $self = {
		into     => $into,
		values   => [ ]
	};

	bless $self, $class;
	return $self;
}

sub get_into   { return shift->{into}; }
sub get_values { return shift->{values}; }

sub set_value
{
	my ($self, $column, $value) = @_;

	# attempt to remove the old value
	for (my $i = 0; $i < scalar @{$self->{values}}; $i++ )
	{
		if ( $self->{values}->[$i]->{column} eq $column )
		{
			delete $self->{values}->[$i];
			last;
		}
	}

	push @{$self->{values}}, { column => $column, value => $value };
}

sub visit
{
	my ($self, $visitor) = @_;
	$visitor->visit_insert( $self );
}

sub clone
{
	my $self = shift;

	my $query = DBIx::Romani::Query::Insert->new({ into => $self->get_into() });

	foreach my $value ( @{$self->{values}} )
	{
		$query->set_value( $value->{column}, $value->{value} );
	}

	return $query;
}

1;