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.361 second using v1.01-cache-2.11-cpan-88abd93f124 )