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 )