Data::Model - model interface which had more data sources unified, a.k.a data/object mapper
package Your::Model; use base 'Data::Model'; use Data::Model::Schema; use Data::Model::Driver::DBI; my $dbfile = '/foo/bar.db'; my $driver = Data::Model::Driver::DBI->new( dsn => "dbi:SQLite:dbname=$dbfile", ); base_driver( $driver ); install_model user => schema { key 'id'; columns qw/ id name /; }; # create database file unless (-f $dbfile) { my $dbh = DBI->connect($dsn, '', '', { RaiseError => 1, PrintError => 0 }); for my $sql (__PACKAGE__->as_sqls) { $dbh->do( $sql ); } $dbh->disconnect; } # in your script: use Your::Model; my $model = Your::Model->new; # insert my $row = $model->set( user => { id => 1, } ); my $row = $model->lookup( user => 1 ); $row->delete;
Data::Model is can use as ORM which can be defined briefly.
There are few documents. It is due to be increased in the near future.
One package can define two or more tables using DSL.
see Data::Model::Schema.
my $model = Class->new;
my $row = $model->lookup( user => $id ); print $row->name;
my @row = $model->lookup_multi( user => [ $id1, $id2 ] ); print $row[0]->name; print $row[1]->name;
my $iterator = $model->get( user => { id => { IN => [ $id1, $id2 ], } }); while (my $row = $iterator->next) { print $row->name; } # or while (my $row = <$iterator>) { print $row->name; } # or while (<$iterator>) { print $_->name; }
$model->set( user => { id => 3, name => 'insert record', });
$model->delete( user => 3 ); # id = 3 is deleted
row object is provided by Data::Model::Row.
my $row = $model->lookup( user => $id ); $row->name('update record'); $row->update;
my $row = $model->lookup( user => $id ); $row->delete;
see Data::Model::Transaction.
see Data::Model::Driver::DBI.
master-slave composition for mysql.
see Data::Model::Driver::DBI::MasterSlave.
Cash of the result of a query.
see Data::Model::Driver::Cache::HASH, see Data::Model::Driver::Cache::Memcached.
memcached is used for data storage.
see Data::Model::Driver::Memcached.
queuing manager for Q4M.
see Data::Model::Driver::Queue::Q4M.
on memory storage.
see Data::Model::Driver::Memory.
Data::Model::Row, Data::Model::Iterator
Benjamin Trott more idea given by Data::ObjectDriver
Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
git clone git://github.com/yappo/p5-Data-Model.git
Data::Model's Git repository is hosted at http://github.com/yappo/p5-Data-Model. patches and collaborators are welcome.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in '<döt>'. Assuming UTF-8
To install Data::Model, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Model
CPAN shell
perl -MCPAN -e shell install Data::Model
For more information on module installation, please visit the detailed CPAN module installation guide.