/Model

Model - the simplest ORM implementation for Perl

Primary LanguagePerl

NAME

Model - the simplest ORM implementation for Perl

DESCRIPTION

ORM implementation with full SQL syntax support.

Contain only methods needed for CRUD.

No JOIN or UNION implementation inside.

Mostly old scool Perl coding style using.

DB TABLES SAMPLE

+---------------+
|feed           |
+---------------+
|id             |
|name           |
|is_public      |
|updated        |
|created        |
+---------------+

feed (ONE) to feed_file (MANY)

+---------------+
|feed_file      |
+---------------+
|id             |
|feed_id        |
|name           |
|is_public      |
|size           |
|for_date       |
|updated        |
|created        |
+---------------+

MODEL SAMPLE

feed model

package Model::Feed;

use Model;
our @ISA = qw/Model/;

sub db_table() 	 { 'feed' };
sub db_columns() { qw/id name is_public updated created/ };


sub feed_file(){
    my $self = shift;
    use Model::FeedFile;
    $self->{feed_file} ||= Model::FeedFile->list_where( $self->{id}, 'feed_id' );
}

1;

feed_file model

package Model::FeedFile;

use Model;
our @ISA = qw/Model/;

sub db_table() 	 { 'feed_file' };
sub db_columns() { qw/id feed_id name size is_public for_date updated created/ };

#feed load by feed_id
sub feed(){
    my $self = shift;
    use Model::Feed;
    $self->{feed} ||= Model::Feed->load( $self->{feed_id} );
}

1;

REQUESTS EXAMPLES

Create

my $model = Model::Feed->new($args);
$model->save();

Update

my $model = Model::Feed->load( $arg->{id}, 'id' );
$model->{name} = 'My new feed name';
$model->save();

Or

	
my $model = Model::Feed->load( $arg->{id} );
$model->{name} = 'My new feed name';
$model->save();

Read

my $model = Model::Feed->load( $channel_id, 'channel_id' );
print Dumper($model);

Read list.

print $_->{some_field} foreach ( @{ Model::Feed->list() } )

Read inner list.

foreach ( @{ Model::Feed->list() } ){ 
	print Dumper($_) foreach ( @{ $_->feed_file() } ); 
}

Read list where.

print $_->{name}." ".$_->{size}." ".$_->{updated} foreach ( @{ Model::FeedFile->list_where( $arg->{feed_id}, 'feed_id' ) } )

Delete.

my $model = Model::FeedFileStat->load( $arg->{id} );
$model->delete();

BUGS

newid - return bad value for MySQL.

SUPPORT

Bugs may be submitted through email

AUTHORS

mobitrade.ua