DBIx::Simple::Class - Advanced object construction for DBIx::Simple!

INSTALLATION

You can install this module via CPAN:

    cpan DBIx::Simple::Class

To install manually, run the following commands:

	perl Makefile.PL
	make
	make test
	make install

DEPENDENCIES

DBIx::Simple, DBI, DBD::SQLite (for running tests only)

DESCRIPTION

This module is written to replace most of the abstraction stuff from the base model
 class in the MYDLjE project on github, but can be used independently as well.

The class provides useful methods which simplify representing rows from tables as Perl
 objects and modifying them. It is not intended to be a full featured ORM. It does not
 provide relational mapping (yet...). This is left to the developers using this class.

DBIx::Simple::Class is a database table/row abstraction. At the same time it is not just
 a fancy representation of a table row like DBIx::Simple::Result::RowObject. Using this
 module will make your code more organized, clean and reliable (separation of concerns +
 input-validation). You will even get some more performance over plain DBIx::Simple
 while keeping its' sexy features when you need them.Last but not least, this module 
 has no other non-CORE dependencies besides DBIx::Simple. See below for details.

SYNOPSIS

  
  #1. In your class representing a template for a row in a database table or view
  package My::Model::AdminUser;
  use base qw(DBIx::Simple::Class);#this is your base class or a class that extends it

  #sql to be used as table
  sub TABLE { 'users' }  #or: use constant TABLE =>'users';
  
  sub COLUMNS {[qw(id group_id login_name login_password first_name last_name)]}

  #used to validate params to field-setters
  sub CHECKS{{
    id => { allow => qr/^\d+$/x },
    group_id => { allow => qr/^1$/x, default=>1 },#admin group_id
    login_name => {required => 1, allow => qr/^\p{IsAlnum}{4,12}$/x},
    first_name =>{required => 1, allow => \&avery_complex_check},
    last_name =>{ allow => sub {
        #less complex inline check that modifies the input value
        #see Params::Check::allow and Params::Check::check
      }
    }
    #...
  }}
  
  sub WHERE { group_id=> 1} #select only users from admin group
  
  1;#end of My::Model::AdminUser

  #2. In a start-up script or subroutine
  DBIx::Simple::Class->dbix( DBIx::Simple->connect(...) );

  #3. usage 
  use My::Model::AdminUser;
  my $user = $dbix->select(
    My::Model::AdminUser->TABLE, '*', {login_name => 'fred'}
  )->object('My::Model::AdminUser')
  
  #or better (if SQL::Abstract is installed)
  my $user = My::Model::AdminUser->select(login_name => 'fred'); #this is cleaner
  
  $user->first_name('Fred')->last_name('Flintstone'); #chainable setters
  $user->save; #update row
  #....
  my $user = My::Model::AdminUser->new(
    login_name => 'fred',
    first_name => 'Fred',
    last_name =>'Flintstone'
  );
  $user->save();#insert new user
  print "new user has id:".$user->id;
  #...
  #select many
  my $class = 'My::Model::AdminUser';
  my @admins = $dbix->select(
    $class->TABLE,
    $class->COLUMNS,
    $class->WHERE
  )->objects($class);
  #or
  my @admins = $dbix->query(
    $VERY_COMPLEX_SQL, @bind_variables
  )->objects($class);

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the
perldoc command.

    perldoc DBIx::Simple::Class

You can also look for information at:

    The project wiki
        https://github.com/kberov/DBIx--Simple--Class/wiki

    AnnoCPAN, Annotated CPAN documentation
        http://annocpan.org/dist/DBIx-Simple-Class

    CPAN Ratings
        http://cpanratings.perl.org/d/DBIx-Simple-Class

    Search CPAN
        http://search.cpan.org/dist/DBIx-Simple-Class/


LICENSE AND COPYRIGHT

Copyright (C) 2012 Красимир Беров

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

