CGI-WebToolkit

 view release on metacpan or  search on metacpan

lib/CGI/WebToolkit.pm  view on Meta::CPAN


	my @columns = map { $self->__quotename($_) } @{$opts->{'columns'}};

	my @joins =
		map {
			$self->__quotename($_).' = '.$self->__quotename($opts->{'joins'}->{$_});
		}
		keys %{$opts->{'joins'}};

	my @group = map { $self->__quotename($_) } @{$opts->{'group'}};

	my @order = map { $self->__quotename($_) } @{$opts->{'order'}};
	
	my $sql
		= 'SELECT'
		.(defined $opts->{'distinct'} ? ' DISTINCT' : '')
		.' '.(scalar @columns ? join(', ', @columns) : '*')
		.' FROM '.join(', ', @tables)
		.' WHERE '
		.(scalar keys %{$opts->{'where'}} ?
			$self->__make_sql_where_clause($opts->{'where'})
			: '1')
		.(scalar keys %{$opts->{'wherelike'}} ?
			' AND '.$self->__make_sql_where_clause($opts->{'wherelike'}, 1)
			: '')
		.(scalar @joins ? ' AND '.join(' AND ', @joins) : '')
		.(scalar @group ? ' GROUP BY '.join(', ', @group) : '')
		.(scalar @order ? ' ORDER BY '.join(', ', @order).' '.uc($opts->{'sortdir'}) : '')
		.($opts->{'limit'} > 0 ? ' LIMIT '.$opts->{'limit'} : '');
	
	return $self->query($sql);
}

sub create
{
	my ($self, %options) = __parse_args(@_);
	my $opts = __parse_params( \%options,
		{
			table => undef,
			row => {},
		});

	my @columns;
	my @values;
	map {
		push @columns, $self->__quotename($_);
		push @values,  $self->__quote($opts->{'row'}->{$_});
	}
	keys %{$opts->{'row'}};

	my $sql
		= 'INSERT'
			.' INTO '.$self->__quotename($opts->{'table'})
			.' ('.join(', ', @columns).')'
			.' VALUES ('.join(', ', @values).')';

	$self->query($sql);
	return $self->{'dbh'}->last_insert_id(undef, undef, $opts->{'table'}, 'id');
}

sub update
{
	my ($self, %options) = __parse_args(@_);
	my $opts = __parse_params( \%options,
		{
			table => '',
			set => {},
			where => {},
			wherelike => {},
		});

	my @sets =
		map {
			$self->__quotename($_).' = '.$self->__quote($opts->{'set'}->{$_});
		}
		keys %{$opts->{'set'}};

	my $sql
		= 'UPDATE'
			.' '.$self->__quotename($opts->{'table'})
			.' SET '.join(', ', @sets)
			.' WHERE '
			.(scalar keys %{$opts->{'where'}} ?
				$self->__make_sql_where_clause($opts->{'where'})
				: '1')
			.(scalar keys %{$opts->{'wherelike'}} ?
				' AND '.$self->__make_sql_where_clause($opts->{'wherelike'}, 1)
				: '');

	return $self->query($sql);
}

sub remove
{
	my ($self, %options) = __parse_args(@_);
	my $opts = __parse_params( \%options,
		{
			table => '',
			where => {},
			wherelike => {},
		});

	my $sql
		= 'DELETE'
			.' FROM '.$self->__quotename($opts->{'table'})
			.' WHERE '
			.(scalar keys %{$opts->{'where'}} ?
				$self->__make_sql_where_clause($opts->{'where'})
				: '1')
			.(scalar keys %{$opts->{'wherelike'}} ?
				' AND '.$self->__make_sql_where_clause($opts->{'wherelike'}, 1)
				: '');

	return $self->query($sql);
}

sub load
{
	my ($self, $group, $recordset, $tablename) = __parse_args(@_);
	
	my $records	= __load_data_file($self->{'privatepath'}.'/data/'.$group.'/'.$recordset.'.txt');



( run in 1.615 second using v1.01-cache-2.11-cpan-13bb782fe5a )