ActiveRecord-Simple
view release on metacpan or search on metacpan
lib/ActiveRecord/Simple.pm view on Meta::CPAN
my $primary_key_sth = $class->dbh->primary_key_info(undef, undef, $table_name);
my $primary_key_data = $primary_key_sth->fetchrow_hashref;
my $primary_key = ($primary_key_data) ? $primary_key_data->{COLUMN_NAME} : undef;
$class->table_name($table_name) if $table_name;
$class->primary_key($primary_key) if $primary_key;
$class->columns(@columns) if @columns;
}
sub connect {
my ($class, $dsn, $username, $password, $options) = @_;
eval { require DBIx::Connector };
$options->{HandleError} = sub {
my ($error_message, $DBI_st) = @_;
$error_message or return;
croak $error_message;
} if ! exists $options->{HandleError};
if ($@) {
$connector = ActiveRecord::Simple::Connect->new($dsn, $username, $password, $options);
$connector->db_connect;
}
else {
$connector = DBIx::Connector->new($dsn, $username, $password, $options);
}
return 1;
}
sub belongs_to {
my ($class, $rel_name, $rel_class, $params) = @_;
my $new_relation = {
class => $rel_class,
lib/ActiveRecord/Simple.pm view on Meta::CPAN
=head2 new
Object's constructor.
my $log = Log->new(message => 'hello', level => 'info');
=head2 connect
Connect to the database, uses DBIx::Connector if installed, if it's not - L<ActiveRecord::Simple::Connect>.
__PACKAGE__->connect($dsn, $username, $password, $options);
=head2 dbh
Access to the database handler. Undef if it's not connected.
__PACKAGE__->dbh->do('SELECT 1');
=head2 table_name
lib/ActiveRecord/Simple/Connect.pm view on Meta::CPAN
use strict;
use warnings;
use 5.010;
use DBI;
my $self;
sub new {
my ($class, $dsn, $username, $password, $params) = @_;
if (!$self) {
$self = { dbh => undef };
if ($dsn) {
$self->{dsn} = $dsn;
$self->{username} = $username if $username;
$self->{password} = $password if $password;
$self->{connection_parameters} = $params if $params;
}
bless $self, $class;
}
return $self;
}
sub db_connect {
my ($self) = @_;
$self->{dbh} = DBI->connect(
$self->{dsn},
$self->{username},
$self->{password},
) or die DBI->errstr;
return $self;
}
sub username {
my ($self, $username) = @_;
$self->{username} = $username if $username;
return $self->{username};
}
sub password {
my ($self, $password) = @_;
$self->{password} = $password if $password;
return $self->{password};
}
sub dsn {
my ($self, $dsn) = @_;
$self->{dsn} = $dsn;
return $self->{dsn};
}
( run in 0.972 second using v1.01-cache-2.11-cpan-49f99fa48dc )