From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!perl -T
use strict;
use warnings FATAL => 'all';
eval "use DBD::SQLite 1.74";
plan skip_all => "DBD::SQLite 1.74" if $@;
my $db = DBIx::Fast->new(
db => 't/db/test.db',
driver => 'SQLite',
PrintError => 1 );
can_ok($db,qw(insert update up delete q val all hash array count));
$db->delete('test', { id => { '>' => 0 } });
for (qw(be eb)) {
{ local $SIG{__DIE__} = sub { like($_[0], qr/Exception: execute()/,"Exception => No such table"); }; eval { $db->execute("SELECT * FROM $_"); }; }
}
is ref $db->errors,'ARRAY' ,'Errors Set';
is scalar(@{$db->errors}),2 ,'Errors Size 2';
is $db->val('select count(*) from test'), 0, 'empty';
is $db->count('test'), 0, 'empty';
is $db->count('test', { id => { '>' => 999 } }), 0, 'empty count where';
is $db->insert('test',{ name => 'test', status => 1 }, time => 'time'),1,'empty';
is $db->last_id,1,'last insert';
$db->update('test',{ sen => { name => 'update t3st' }, where => { id => 1 } }, time => 'time' );
my $val = $db->val('select name from test where id = 1');
like $val, qr/update t3st/, 'update tests';
$db->up('test', { name => 'update test' }, { id => 1 }, time => 'time' );
$val = $db->val('select name from test where id = ?',1);
like $val, qr/update test/, 'update tests';
$db->insert('test',{ name => rand(6) }, time => 'time') for 1 .. 5;
my @flat = $db->flat('SELECT name FROM test WHERE 1');
is ref \@flat,'ARRAY','flat() ARRAY';
is scalar(@flat),6,'flat() Scalar 6';
$db->flat('SELECT name FROM test WHERE 1');
is ref $db->results,'ARRAY','Results Flat OK';
$db->array('SELECT * FROM test WHERE 1');
is ref $db->results,'ARRAY','Results Array OK';
$db->hash('SELECT * FROM test WHERE id = ? ',1);
is ref $db->results, 'HASH','results hash';
like $db->results->{time}, qr//, 'time NOW()';
$db->all('select * from test');
is ref $db->results, 'ARRAY','results all';
is $db->delete('test', { id => { '=' => $db->last_id } }), 1, 'delete last_id';
is $db->sql,'DELETE FROM test WHERE id = ? ','Delete ID Multi Args =';
$db->delete('test', { id => { '>' => 999 } });
is $db->sql,'DELETE FROM test WHERE id > ? ','Delete ID Multi Args >';
$db->delete('test', { id => 999 } );
is $db->sql,'DELETE FROM test WHERE id = ? ','Delete ID';
like $db->TableName('TableName'), qr/TableName/, 'TableName OK';
done_testing();