my
$schema
= DBICTest->init_schema(
no_deploy
=> 1);
my
$sql_maker
=
$schema
->storage->sql_maker;
{
my
(
$sql
,
@bind
) =
$sql_maker
->insert(
'lottery'
,
{
'day'
=>
'2008-11-16'
,
'numbers'
=> [13, 21, 34, 55, 89]
}
);
is_same_sql_bind(
$sql
, \
@bind
,
q/INSERT INTO lottery (day, numbers) VALUES (?, ?)/
,
[ [
'day'
=>
'2008-11-16'
], [
'numbers'
=> [13, 21, 34, 55, 89]] ],
'sql_maker passes arrayrefs in insert'
);
(
$sql
,
@bind
) =
$sql_maker
->update(
'lottery'
,
{
'day'
=>
'2008-11-16'
,
'numbers'
=> [13, 21, 34, 55, 89]
}
);
is_same_sql_bind(
$sql
, \
@bind
,
q/UPDATE lottery SET day = ?, numbers = ?/
,
[ [
'day'
=>
'2008-11-16'
], [
'numbers'
=> [13, 21, 34, 55, 89]] ],
'sql_maker passes arrayrefs in update'
);
}
{
my
(
$sql
,
@bind
) =
$sql_maker
->where({
last_attempt
=> \
'< now() - interval "12 hours"'
,
next_attempt
=> {
'<'
, \
'now() - interval "12 hours"'
},
created
=> [
{
'<='
, \
'1969'
},
\
'> 1984'
,
],
});
is_same_sql_bind(
$sql
,
\
@bind
,
'WHERE
(created <= 1969 OR created > 1984 )
AND last_attempt < now() - interval
"12 hours"
AND next_attempt < now() - interval
"12 hours"
',
[],
);
}
{
my
$sa
= DBIx::Class::SQLMaker->new;
{
my
(
$sql
,
@bind
) =
$sa
->
select
(
'foo'
,
'*'
, {}, {
for
=>
'update'
} );
is_same_sql_bind(
$sql
,
\
@bind
,
'SELECT * FROM foo FOR UPDATE'
,
[],
);
}
{
my
(
$sql
,
@bind
) =
$sa
->
select
(
'bar'
,
'*'
, {}, {
for
=> \
'baz'
} );
is_same_sql_bind(
$sql
,
\
@bind
,
'SELECT * FROM bar FOR baz'
,
[],
);
}
}
my
$file
=
quotemeta
(__FILE__);
throws_ok (
sub
{
$schema
->resultset (
'Artist'
)->search ({}, {
order_by
=> {
-asc
=>
'stuff'
,
-desc
=>
'staff'
} } )->as_query;
},
qr/$file/
,
'Exception correctly croak()ed'
);
done_testing;