LittleORM
view release on metacpan or search on metacpan
lib/LittleORM/Model.pm view on Meta::CPAN
while( my $data = $sth -> fetchrow_hashref() )
{
my $o = $self -> create_one_return_value_item( $data, %{ $extra_args_data } );
push @rv, $o;
}
} else
{
assert( 0, 'insert error' );
}
$sth -> finish();
}
return @rv;
}
sub __leave_only_pk
{
my $self = shift;
my %args = @_;
my %rv = ();
foreach my $attr ( $self -> __find_primary_keys() )
{
my $aname = $attr -> name();
if( exists $args{ $aname } )
{
$rv{ $aname } = $args{ $aname };
}
}
unless( %rv )
{
%rv = %args;
}
return %rv;
}
sub __find_attr_by_its_db_field_name
{
my ( $self, $db_field_name ) = @_;
my $rv = undef;
pgmxcobWi7lULIJW:
foreach my $attr ( $self -> meta() -> get_all_attributes() )
{
if( &__get_db_field_name( $attr ) eq $db_field_name )
{
$rv = $attr;
last pgmxcobWi7lULIJW;
}
}
return $rv;
}
sub update
{
my $self = shift;
my %args = ();
if( scalar @_ == 1 )
{
$args{ '_debug' } = $_[ 0 ];
} else
{
%args = @_;
}
my @upadte_pairs = $self -> __get_update_pairs_for_update_request( %args );
my $where = $self -> __form_update_request_where_part( %args );
my $sql = sprintf( 'UPDATE %s SET %s WHERE %s',
$self -> _db_table(),
join( ',', @upadte_pairs ),
$where );
my $rc = undef;
my $dbh = $self -> __get_dbh( &__for_write() );
if( $args{ '_debug' } )
{
return $sql;
} else
{
$rc = &LittleORM::Db::doit( $sql, $dbh );
if( ref( $self ) )
{
if( $rc != 1 )
{
assert( 0, sprintf( "%s: %s", $sql, &LittleORM::Db::errstr( $dbh ) ) );
}
}
}
return $rc;
}
sub __get_update_pairs_for_update_request
{
my $self = shift;
my %args = @_;
my @upadte_pairs = ();
if( ref( $self ) )
{
@upadte_pairs = $self -> __get_update_pairs_for_update_request_called_from_instance( %args );
} else
{
@upadte_pairs = $self -> __get_update_pairs_for_update_request_called_from_class( %args );
}
return @upadte_pairs;
( run in 0.998 second using v1.01-cache-2.11-cpan-f56aa216473 )