ActiveRecord-Simple
view release on metacpan or search on metacpan
t/11-crud-methods.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use FindBin '$Bin';
use lib "$Bin/../lib";
use Data::Dumper;
use DBI;
package Customer;
use parent 'ActiveRecord::Simple';
__PACKAGE__->table_name('customer');
__PACKAGE__->primary_key('id');
__PACKAGE__->columns(qw/id first_name second_name age email/);
__PACKAGE__->has_many('orders' => 'Order');
__PACKAGE__->has_many(achievements => 'Achievement', { via => 'customer_achievement' });
package Order;
use parent 'ActiveRecord::Simple';
__PACKAGE__->table_name('order');
__PACKAGE__->primary_key('id');
__PACKAGE__->columns(qw/id title amount customer_id/);
__PACKAGE__->belongs_to(customer => 'Customer');
package Achievement;
use parent 'ActiveRecord::Simple';
__PACKAGE__->table_name('achievement');
__PACKAGE__->primary_key('id');
__PACKAGE__->columns(qw/id title/);
__PACKAGE__->has_many(customers => 'Customer', { via => 'customer_achievement' });
package main;
use Test::More;
eval { require DBD::SQLite } or plan skip_all => 'Need DBD::SQLite for testing';
my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:","","")
or die DBI->errstr;
my $_INIT_SQL_CUSTOMERS = q{
CREATE TABLE `customer` (
`id` int AUTO_INCREMENT,
`first_name` varchar(200) NULL,
`second_name` varchar(200) NOT NULL,
`age` tinyint(2) NULL,
`email` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
);
( run in 1.472 second using v1.01-cache-2.11-cpan-39bf76dae61 )