{
$SQL::Abstract::Query::Base::VERSION
=
'0.01'
;
}
requires(
qw( _build_abstract_result )
);
subtype
'SQL::Abstract::Query::Types::FieldValues'
,
as
'HashRef'
;
coerce
'SQL::Abstract::Query::Types::FieldValues'
,
from
'ArrayRef'
,
via {
return
{ zip(
@$_
,
@$_
) } };
subtype
'SQL::Abstract::Query::Types::Table'
,
as
'Str'
;
has
query
=> (
is
=>
'ro'
,
isa
=>
'SQL::Abstract::Query'
,
required
=> 1,
);
has
abstract_result
=> (
is
=>
'ro'
,
isa
=>
'ArrayRef'
,
lazy_build
=> 1,
);
sub
original_values {
my
(
$self
) =
@_
;
return
@{
$self
->_original_values() };
}
has
_original_values
=> (
is
=>
'ro'
,
isa
=>
'ArrayRef'
,
lazy_build
=> 1,
);
sub
_build__original_values {
my
(
$self
) =
@_
;
my
@values
= @{
$self
->abstract_result() };
shift
(
@values
);
return
\
@values
;
}
has
sql
=> (
is
=>
'ro'
,
isa
=>
'Str'
,
lazy_build
=> 1,
);
sub
_build_sql {
my
(
$self
) =
@_
;
return
$self
->abstract_result->[0];
}
sub
call {
my
$class
=
shift
;
my
$self
=
$class
->new(
@_
);
return
(
$self
->sql(),
$self
->original_values(),
);
}
sub
values
{
my
(
$self
,
$field_values
) =
@_
;
my
@values
;
foreach
my
$value
(
$self
->original_values()) {
push
@values
,
$field_values
->{
$value
};
}
return
@values
;
}
sub
_quote {
my
$self
=
shift
;
return
$self
->query->abstract->_quote(
@_
);
}
1;