DBIx-Squirrel
view release on metacpan or search on metacpan
docs/POD/README.md view on Meta::CPAN
- Let us do a full worked example. We will connect to a database, create and
work with two result sets, one of which expects a single bind-value. Some
concepts will be expanded upon and improved later, but it might be helpful
to dip a toe in the water ahead of time:
use DBIx::Squirrel database_entities => [ qw/db artists artist/ ];
# Associate helper ("db") with our database connection:
@connect_args = ( 'dbi:SQLite:dbname=chinook.db', '', '', { sqlite_unicode => 1 } );
db( DBIx::Squirrel->connect(@connection_args) );
# Resolve the database connection helper ("db"), using it to
# associate helpers ("artist" and "artists") with different
# result sets:
artist(db->results([
'SELECT *',
'FROM artists',
'WHERE Name=?',
docs/POD/README.md view on Meta::CPAN
use DBIx::Squirrel database_entities => [qw/db get_artist_id_by_name/];
db do {
DBIx::Squirrel->connect(
"dbi:SQLite:dbname=./t/data/chinook.db",
"",
"",
{ PrintError => !!0,
RaiseError => !!1,
sqlite_unicode => !!1,
},
);
};
get_artist_id_by_name do {
db->results([
'SELECT ArtistId, Name',
'FROM artists',
'WHERE Name=?',
'LIMIT 1',
examples/01.pl view on Meta::CPAN
use DBIx::Squirrel::it qw/iterator result result_offset/;
db do {
DBIx::Squirrel->connect(
"dbi:SQLite:dbname=./t/data/chinook.db",
"",
"",
{
PrintError => !!0,
RaiseError => !!1,
sqlite_unicode => !!1,
},
);
};
get_artist_id_by_name do {
db->results(
"SELECT ArtistId, Name FROM artists WHERE Name=? LIMIT 1" => sub {
my($artist) = @_;
print "----\n";
print "Name: ", $artist->Name, "\n";
examples/02.pl view on Meta::CPAN
use DBIx::Squirrel::it qw/iterator result result_offset/;
db do {
DBIx::Squirrel->connect(
"dbi:SQLite:dbname=./t/data/chinook.db",
"",
"",
{
PrintError => !!0,
RaiseError => !!1,
sqlite_unicode => !!1,
},
);
};
get_artist_by_id do {
db->results( [
'SELECT *', # Long queries may be split into
'FROM artists', # multiple strings inside an array,
'WHERE ArtistId=?', # making code easier to read
'LIMIT 1',
examples/03.pl view on Meta::CPAN
use DBIx::Squirrel database_entities => [qw/db artists/];
use DBIx::Squirrel::it qw/database result result_offset/;
db( DBIx::Squirrel->connect(
"dbi:SQLite:dbname=./t/data/chinook.db",
"",
"", {
PrintError => !!0,
RaiseError => !!1,
sqlite_unicode => !!1,
},
) );
artists( db->results(
[
'SELECT ArtistId, Name',
'FROM artists',
'LIMIT 10',
] => sub {
my($artist) = @_;
lib/DBIx/Squirrel.pod view on Meta::CPAN
Let us do a full worked example. We will connect to a database, create and
work with two result sets, one of which expects a single bind-value. Some
concepts will be expanded upon and improved later, but it might be helpful
to dip a toe in the water ahead of time:
use DBIx::Squirrel database_entities => [ qw/db artists artist/ ];
# Associate helper ("db") with our database connection:
@connect_args = ( 'dbi:SQLite:dbname=chinook.db', '', '', { sqlite_unicode => 1 } );
db( DBIx::Squirrel->connect(@connection_args) );
# Resolve the database connection helper ("db"), using it to
# associate helpers ("artist" and "artists") with different
# result sets:
artist( db->results('SELECT * FROM artists WHERE Name=? LIMIT 1') );
artists( db->results('SELECT * FROM artists') );
# Address the helper ("artist"), passing it a bind-value, to get
lib/DBIx/Squirrel.pod view on Meta::CPAN
use DBIx::Squirrel database_entities => [qw/db get_artist_id_by_name/];
db do {
DBIx::Squirrel->connect(
"dbi:SQLite:dbname=./t/data/chinook.db",
"",
"",
{ PrintError => !!0,
RaiseError => !!1,
sqlite_unicode => !!1,
},
);
};
get_artist_id_by_name do {
db->results(
"SELECT ArtistId, Name FROM artists WHERE Name=? LIMIT 1" => sub {
my($artist) = @_;
print "----\n";
print "Name: ", $artist->Name, "\n";
t/lib/T/Squirrel.pm view on Meta::CPAN
our @MOCK_DB_CONNECT_ARGS = ($MOCK_DB_DSN, @MOCK_DB_CREDENTIALS);
our $TEST_DB_NAME = "$TEST_DATA_DIR/chinook.db";
our($TEST_DB_DSN, $TEST_DB_USERNAME, $TEST_DB_PASSWORD, $TEST_DB_ATTR) = (
"dbi:SQLite:dbname=$TEST_DB_NAME",
"",
"",
{ AutoCommit => !!0,
PrintError => !!0,
RaiseError => !!1,
sqlite_unicode => !!1,
sqlite_see_if_its_a_number => !!1,
},
);
our @TEST_DB_CREDENTIALS = ($TEST_DB_USERNAME, $TEST_DB_PASSWORD);
our @TEST_DB_CONNECT_ARGS = ($TEST_DB_DSN, @TEST_DB_CREDENTIALS, $TEST_DB_ATTR);
our $DBD_SQLite_VERSION = do {
(my $version = $DBD::SQLite::VERSION) =~ s/_(\d+)$/.$1/;
my @maj_min_fix = split(/\./, "${version}.0", 3);
@_ < 3 ? 0+sprintf('%d.%02d', @maj_min_fix[0,1]) : 0+sprintf('%d.%02d02d', @maj_min_fix);
( run in 0.546 second using v1.01-cache-2.11-cpan-f29a10751f0 )