cheatsheet for Data::ObjectDriver

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use 5.010000;

package Neko::Driver;
use Data::ObjectDriver::Driver::DBI;
use DBI;

my $dbh = DBI->connect(
    'dbi:SQLite:',
    '',
    '',
    {RaiseError => 1},
);
sub driver { Data::ObjectDriver::Driver::DBI->new(dbh => $dbh) }

package Neko::Table::User;
use parent qw(Data::ObjectDriver::BaseObject);

__PACKAGE__->install_properties({
    columns => [qw(id name)],
    primary_key => 'id',
    datasource => 'user',
    driver => Neko::Driver->driver,
});

sub dump {
    local $_ = shift;
    say $_->id . ':' . $_->name;
}

package main;

say '-- install schema';
Neko::Driver->driver->dbh->do(q{
    create table user (
        id     INTEGER NOT NULL PRIMARY KEY,
        name   varchar(256) NOT NULL
    );
});

say '-- insert';
{   
    my $user = Neko::Table::User->new();
    $user->name('nekokak');
    $user->save();
}

say '-- find one row';
{   
    my $user = Neko::Table::User->lookup(1);
    say $user->id . ':' . $user->name;
say '-- remove';
    $user->remove;
}

say '-- bulk-search';
{   
    Neko::Table::User->bulk_insert( [qw/name/],
        [ map { [$_] } qw/nomaneko manekineko/ ] );
}

say '-- search';
{   
    my $it = Neko::Table::User->search({name => 'nekokak'});
    while (my $row = $it->()) {
         say $row->id . ':' . $row->name;
    }
}

say '-- print all rows';
{   
    my $it = Neko::Table::User->search({});
    while (my $row = $it->()) {
        $row->dump;
    }
}

Published: 2011-07-07(Thu) 01:33