Ambrosia
view release on metacpan or search on metacpan
t/Ambrosia/QL.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use lib qw(lib t ..);
use Test::More tests => 7;
use Test::Deep;
use Data::Dumper;
use Ambrosia::DataProvider;
#use Ambrosia::QL;
BEGIN {
use_ok( 'Ambrosia::QL' ); #test #1
}
my $confDS = do 'db.params';
instance Ambrosia::DataProvider(test => $confDS);
Ambrosia::DataProvider::assign 'test';
my $d = storage()->driver('DBI', 'Client');
my $dbh = $d->handler();
$dbh->do(q~DROP TABLE IF EXISTS `tClient`~);
$dbh->do(<<CREATE_TABLE);
CREATE TABLE `tClient` (
`ClientId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`LastName` varchar(32) NOT NULL,
`FirstName` varchar(32) NOT NULL,
`MiddleName` varchar(32) NOT NULL,
`Age` tinyint(4) NOT NULL,
PRIMARY KEY (`ClientId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
CREATE_TABLE
$d->save_transaction();
my $NUM_ROWS = 30;
for ( 1 .. $NUM_ROWS )
{
$d->source('tClient')
->insert()
->what(qw/LastName FirstName MiddleName Age/)
->execute('LastName'.$_, 'FirstName'.$_, 'MiddleName'.$_, 20+$_);
}
for ( 1 .. $NUM_ROWS )
{
$d->source('tClient')
->insert()
->what(qw/LastName FirstName MiddleName Age/)
->execute('LastName'.$_, 'FirstName'.$_, 'MiddleName'.$_, 20+$_);
}
$d->save_transaction();
################################################################################
{## test #2 ##
my @r = Ambrosia::QL
->from('tClient')
->in(storage()->driver('DBI', 'Client'))
->what(qw/LastName FirstName MiddleName Age/)
->predicate('ClientId', '=', 22)
->take(1);
( run in 1.042 second using v1.01-cache-2.11-cpan-d7f47b0818f )