Provided by: libropkg-perl_0.4-1.2_all bug

NAME

        RoPkg::DBObject - General pourpose database object.

VERSION

       0.1.4

DESCRIPTION

       This class can be used as a base class for objects who holds all their information in a
       database. The class provides the base methods to add/delete/update/select the object
       to/from a database.

       RoPkg::DBObject inherits RoPkg::Object .

SYNOPSIS

        package RoPkg::Person;

        use strict;
        use warnings;

        use RoPkg::DBObject;
        use RoPkg::Exceptions;

        use vars qw($VERSION @ISA);

        @ISA=qw(RoPkg::DBObject);

        my $methods = {
          id => '-',
          Name => '-',
          Addr => '-',
        };

        sub new {
          my ($class, %opt) = @_;
          my $self;

          $opt{methods} = $methods;
          $self = $class->SUPER::new(%opt);

          return $self;
        }

        sub AddToDB {
          my ($self) = @_;

          OutsideClass->throw('Called from outside class')
            if ( !$self or ref($self) ne $CLASS);

          return $self->SQL_Insert();
        }

        1;

        tester.pl

        use warnings;
        use strict;

        use RoPkg::Person;
        use RoPkg::DB;

        sub main {
          my ($p, $db);

          $db = new RoPkg::DB();
          $db->add('dsn...', 'user', 'pass', 'dbc');
          $p = new RoPkg::Person(dbo => $db, dbo_method => 'db_dbc');

          $p->id(1);
          $p->Name('John Doe');
          $p->Addr('home');
          $p->AddToDB();
        }

        main();

SUBROUTINES/METHODS

   new($hashref)
       Constructor of the class. At this moment new() accepts 3 parameters:

       *) dbo
       *) dbo_method
       *) quote_char

       dbo and dbo_method must be given to the constructor.  quote_char is optional. dbo is the
       database object (a instance of RoPkg::DB)and dbo_method dbo_method is the name of the
       method used to have access to the database handle.  quote_char is the char used internally
       by DBI to quote the table names, field names and so on. Default, the quote_char is empty
       (no quotation). If you are using PostgreSQL and you have upcase chars in table and fields
       names use quote_char => q{"} .

       Exceptions:

       RoPkg::DBObject uses the exceptions provided by RoPkg::Exceptions.  new() throws the
       following exceptions:

       *) Param::Mising
       *) Param::Wrong

       Param::Missing is raised when dbo or dbo_method parameters have not been specified in the
       parameters list.

       Param::Wrong is raised when dbo or dbo_method parameters are not defined (or empty).

   dbo($dbo)
       get/set method. If $dbo is present (and defined), the internal $dbo object will be
       replaced with the new one. If $dbo is not present, the method acts as a get method, and
       will return the database object. The method will raise OutsideClass exception if is called
       outside the class instance.

   dbo_method($dbo_method)
       get/set method. If $dbo_method is present (and defined), the internal $dbo_method value
       will be replaced with the one specified by $dbo_method parameter. Otherwise, the get
       behaviour will be selected, and the method will return the current value of $dbo_method.
       The method will raise OutsideClass exception if is called outside the class instance.

   dbh()
       Returns the DBI object used by this object.

SQL METHODS

       The following methods are responsable for all operations involving the database. All
       methods use SQL::Abstract to generate sql queries to ensure portability of the queries.

       The data that will be added/deleted to the database, is taken from the methods provided by
       $methods .

   SQL_Insert()
       add the current object to the database. Returns the value of DBI->execute.

   SQL_Update(@fields)
       update the data from database. The fields array hold all the field names who will uniquely
       identify the object in the database (usually the id of the object).

   SQL_Delete(@fields)
       update the data from database. The fields array hold all the field names who will uniquely
       identify the object in the database (usually the id of the object).

   SQL_Select(@fields)
       searches into the database for the object and initialize the current object with the
       values found.  The fields array hold all the field names who will uniquely identify the
       object in the database (usually the id of the object).  This method is special. It will
       look only at the first record who meet the requirements (in sql 'LIMIT 1'). Also, if no
       records are found DB::NoResults exception is raised.

DEPENDENCIES

       RoPkg::Object require perl 5.008 or later and the following modules:

       SQL::Abstract
       RoPkg::Object
       RoPkg::Exceptions

PERL CRITIC

       The code is perl critic level 2 compliant and almost level 1 compliant

DIAGNOSTICS

       This module comes with his own tests. To run the tests unpack the source, and use 'make
       test' command.

CONFIGURATION AND ENVIRONMENT

       This module does not use any configuration files or environment variables. The
       dependencies however can use them. Please read the man page of each dependency to be sure.

INCOMPATIBILITIES

       Do not install this version on the same machine with Simba <= 0.7.1

BUGS AND LIMITATIONS

       None known to the author

AUTHOR

       Subredu Manuel <diablo@iasi.roedu.net>

LICENSE AND COPYRIGHT

       Copyright (C) 2005 Subredu Manuel.  All Rights Reserved.  This module is free software;
       you can redistribute it and/or modify it under the same terms as Perl itself.  The LICENSE
       file contains the full text of the license.