NAME

Class::PObject::Driver::csv - CSV Pobject Driver

SYNOPSIS

use Class::PObject;
pobject Person => {
    columns => ['id', 'name', 'email'],
    driver  => 'csv',
    datasource => {
        Dir => 'data/',
        Table => 'person'
    }
};

DESCRIPTION

Class::PObject::Driver::csv is a direct subclass of Class::PObjecet::Driver::DBI. It inherits all the base functionality needed for all the DBI-related classes. For details of these methods and their specifications refer to Class::PObject::Driver and Class::PObject::Driver::DBI.

DATASOURCE

datasource attribute should be in the form of a hashref. The following keys are supported

  • Dir - points to the directory where the CSV files are stored. If this is missing will default to your system's temporary folder.

  • Table - defines the name of the table that objects will be stored in. If this is missing will default to the name of the object, non-alphanumeric characters replaced with underscore (_).

METHODS

Class::PObject::Driver::csv (re-)defines following methods of its own

  • dbh() base DBI method is overridden with the version that creates a DBI handle through DBD::CSV.

  • save() either builds a SELECT SQL statement by calling base _prepare_select() if the object id is missing, or builds an UPDATE SQL statement by calling base _prepare_update().

    If the ID is missing, calls generate_id() method, which returns a unique ID for the object.

  • generate_id($self, $pobject_name, \%properties) returns a unique ID for new objects. This determines the new ID by performing a SELECT id FROM $table ORDER BY id DESC LIMIT 1 SQL statement to determine the latest inserted ID.

  • _tablename($self, $pobject_name, \%properties)

    Redefines base method _tablename(). If the table is missing, it will also create the table for you.

SEE ALSO

Class::PObject, Class::PObject::Driver::mysql, Class::PObject::Driver::file

AUTHOR

Sherzod Ruzmetov <sherzodr@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2003 by Sherzod B. Ruzmetov.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.