view release on metacpan or search on metacpan
lib/ActiveRecord/Simple.pm view on Meta::CPAN
=head1 DESCRIPTION
ActiveRecord::Simple is a simple lightweight implementation of ActiveRecord
pattern. It's fast, very simple and very light.
=head1 SYNOPSIS
package Model;
use parent 'ActiveRecord::Simple';
# connect to the database:
__PACKAGE__->connect($dsn, $opts);
package Customer;
use parent 'Model';
__PACKAGE__->table_name('customer');
__PACKAGE__->columns(qw/id first_name last_login/);
__PACKAGE__->primary_key('id');
__PACKAGE__->has_many(purchases => 'Purchase');
package Purchase;
use parent 'Model';
__PACKAGE__->auto_load(); ### load table_name, columns and primary key from the database automatically
__PACKAGE__->belongs_to(customer => 'Customer');
package main;
# get customer with id = 1:
my $customer = Customer->objects->find({ id => 1 })->fetch();
lib/ActiveRecord/Simple/Find.pm view on Meta::CPAN
package ActiveRecord::Simple::Find;
use 5.010;
use strict;
use warnings;
use vars qw/$AUTOLOAD/;
use Carp;
use parent 'ActiveRecord::Simple';
use ActiveRecord::Simple::Utils qw/load_module/;
our $MAXIMUM_LIMIT = 100_000_000_000;
sub new {
my ($self_class, $class, @param) = @_;
t/05-accessors.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
package Customer;
use FindBin qw/$Bin/;
use lib "$Bin/../lib";
use parent 'ActiveRecord::Simple';
__PACKAGE__->table_name('customer');
__PACKAGE__->columns(qw/id first_name last_name email/);
__PACKAGE__->primary_key('id');
package main;
use Test::More;
t/06-no-accessors.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
package Customer;
use FindBin qw/$Bin/;
use lib "$Bin/../lib";
use parent 'ActiveRecord::Simple';
__PACKAGE__->make_columns_accessors(0);
__PACKAGE__->table_name('customer');
__PACKAGE__->columns(qw/id first_name last_name email/);
__PACKAGE__->primary_key('id');
t/07-auto_load.t view on Meta::CPAN
#!/usr/bin/perl
BEGIN {
package Schema;
use FindBin qw/$Bin/;
use lib "$Bin/../lib";
use parent 'ActiveRecord::Simple';
eval { require DBD::SQLite } or exit 0;
__PACKAGE__->connect("dbi:SQLite:dbname=:memory:","","");
my $_INIT_SQL_CUSTOMER = q{
CREATE TABLE `customer` (
`id` int AUTO_INCREMENT,
t/09-find.t view on Meta::CPAN
use Data::Dumper;
use Test::More;
use DBI;
eval { require DBD::SQLite } or plan skip_all => 'Need DBD::SQLite for testing';
package Customer;
use parent 'ActiveRecord::Simple';
__PACKAGE__->table_name('customers');
__PACKAGE__->primary_key('id');
__PACKAGE__->columns(qw/id first_name second_name age email/);
#__PACKAGE__->has_one(info => 'CustomersInfo');
__PACKAGE__->mixins(
mixin => sub {
t/10-relations.t view on Meta::CPAN
BEGIN {
package Schema;
use FindBin '$Bin';
use lib "$Bin/../lib";
use parent 'ActiveRecord::Simple';
__PACKAGE__->connect("dbi:SQLite:dbname=:memory:","","");
my $_DROP_SQL_CUSTOMER = q{
DROP TABLE IF EXISTS customer;
};
my $_INIT_SQL_CUSTOMER = q{
CREATE TABLE `customer` (
`id` int AUTO_INCREMENT,
t/11-crud-methods.t view on Meta::CPAN
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;
t/12-connect.t view on Meta::CPAN
use FindBin '$Bin';
use lib "$Bin/../lib";
use Data::Dumper;
use DBI;
#use Scalar::Util qw/blessed/;
package Customer;
use parent 'ActiveRecord::Simple';
__PACKAGE__->table_name('customers');
__PACKAGE__->primary_key('id');
__PACKAGE__->columns(qw/id first_name second_name age email/);
__PACKAGE__->has_many('orders' => 'Order');
__PACKAGE__->has_many('achievements' => { CustomersAchievement => 'Achievement' });
t/13-init.t view on Meta::CPAN
use Test::More;
use FindBin '$Bin';
use lib "$Bin/../lib";
BEGIN {
package Schema;
use parent 'ActiveRecord::Simple';
eval { require DBD::SQLite } or exit 0;
__PACKAGE__->connect("dbi:SQLite:dbname=:memory:","","");
my $_INIT_SQL_CUSTOMERS = q{
CREATE TABLE `customer` (
`id` int AUTO_INCREMENT,
t/13-init.t view on Meta::CPAN
};
Schema->dbh->do($_INIT_SQL_CA);
Schema->dbh->do($_DATA_SQL_CA);
}
package Customer;
#use parent 'Schema';
our @ISA = qw/Schema/;
__PACKAGE__->auto_load();
__PACKAGE__->has_many(orders => 'Order');
__PACKAGE__->has_many(achievements => 'Achievement', { via => 'customer_achievement' });
package Order;
t/14-smart-accessors.t view on Meta::CPAN
use FindBin '$Bin';
use lib "$Bin/../lib";
use Test::More;
BEGIN {
package Schema;
use parent 'ActiveRecord::Simple';
eval { require DBD::SQLite } or exit 0;
__PACKAGE__->connect("dbi:SQLite:dbname=:memory:","","");
my $_INIT_SQL_CUSTOMERS = q{
CREATE TABLE `customer` (
`id` int AUTO_INCREMENT,
t/14-smart-accessors.t view on Meta::CPAN
(3, 3);
};
Schema->dbh->do($_INIT_SQL_CA);
Schema->dbh->do($_DATA_SQL_CA);
}
package Customer;
#use parent 'Schema';
our @ISA = qw/Schema/;
__PACKAGE__->auto_load();
__PACKAGE__->has_many(orders => 'Order');
__PACKAGE__->has_many(achievements => 'Achievement', { via => 'customer_achievement' });
package Order;
our @ISA = qw/Schema/;
t/15-sql-row.t view on Meta::CPAN
use Test::More;
use FindBin '$Bin';
use lib "$Bin/../lib";
BEGIN {
package Schema;
use parent 'ActiveRecord::Simple';
eval { require DBD::SQLite } or exit 0;
__PACKAGE__->connect("dbi:SQLite:dbname=:memory:","","");
my $_INIT_SQL_CUSTOMERS = q{
CREATE TABLE `customer` (
`id` int AUTO_INCREMENT,
t/15-sql-row.t view on Meta::CPAN
};
Schema->dbh->do($_INIT_SQL_CA);
Schema->dbh->do($_DATA_SQL_CA);
}
package Customer;
#use parent 'Schema';
our @ISA = qw/Schema/;
__PACKAGE__->auto_load();
__PACKAGE__->has_many('orders' => 'Order');
__PACKAGE__->has_many('achievements' => 'Achievement', { via => 'customer_achievement' });
package Order;
our @ISA = qw/Schema/;