package DBIx::Custom::Tag;
use strict;
use warnings;
use Carp 'croak';
use DBIx::Custom::Util '_subname';
# Carp trust relationship
push @DBIx::Custom::QueryBuilder::CARP_NOT, __PACKAGE__;
sub equal { _basic('=', @_) }
sub greater_than_equal { _basic('>=', @_) }
sub greater_than { _basic('>', @_) }
sub in {
my ($column, $count) = @_;
# Check arguments
croak qq{Column name and count of values must be specified in tag "{in }" }
. _subname
unless $column && $count && $count =~ /^\d+$/;
# Part of statement
my $s = "$column in (";
for (my $i = 0; $i < $count; $i++) { $s .= '?, ' }
$s =~ s/, $//;
$s .= ')';
# Columns
my $columns = [];
push @$columns, $column for (0 .. $count - 1);
return [$s, $columns];
}
sub insert_param {
my @columns = @_;
# Insert parameters
my $s = '(';
$s .= "$_, " for @columns;
$s =~ s/, $//;
$s .= ') ';
$s .= 'values (';
$s .= "?, " for @columns;
$s =~ s/, $//;
$s .= ')';
return [$s, \@columns];
}
sub like { _basic('like', @_) }
sub lower_than_equal { _basic('<=', @_) }
sub lower_than { _basic('<', @_) }
sub not_equal { _basic('<>', @_) }
sub placeholder {
my $column = shift;
# Check arguments
croak qq{Column name must be specified in tag "{? }" } . _subname
unless $column;
return ['?', [$column]];
}
sub update_param {
my @columns = @_;
# Update parameters
my $s = 'set ';
$s .= "$_ = ?, " for @columns;
$s =~ s/, $//;
return [$s, \@columns];
}
sub _basic {
my ($name, $column) = @_;
# Check arguments
croak qq{Column name must be specified in tag "{$name }" } . _subname
unless $column;
return ["$column $name ?", [$column]];
}
1;
=head1 NAME
DBIx::Custom::Tag - DEPRECATED!
=cut