DB-Object
view release on metacpan or search on metacpan
lib/DB/Object/Tables.pm view on Meta::CPAN
sub reverse
{
my $self = shift( @_ );
if( @_ )
{
my $q = $self->_reset_query;
$self->{reverse}++;
$q->reverse( $self->{reverse} );
}
return( $self->{reverse} );
}
sub schema { return( shift->_set_get_scalar( 'schema', @_ ) ); }
sub select
{
my $self = shift( @_ );
my $q = $self->_reset_query;
# If the user wants to execute this, then we reset the query,
# but if the user wants to call other methods chained like as_string we don't do anything
# CORE::delete( $self->{query_reset} ) if( !defined( wantarray() ) );
if( want('VOID') || want('OBJECT') )
{
CORE::delete( $self->{query_reset} ) if( want('VOID') );
# return( $q->select( @_ ) );
# return( $q->select( @_ ) ) if( !defined( wantarray() ) );
return( $q->select( @_ ) );
}
if( wantarray() )
{
my( @val ) = $q->select( @_ ) || return( $self->pass_error( $q->error ) );
# a statement handler is returned and we reset the query so that other calls would not use the previous DB::Object::Query object
$self->reset;
return( @val );
}
else
{
my $val = $q->select( @_ ) || return( $self->pass_error( $q->error ) );
$self->reset;
return( $val );
}
}
sub sort
{
my $self = shift( @_ );
if( @_ )
{
my $q = $self->_reset_query;
$self->{reverse} = 0;
$q->sort( $self->{reverse} );
}
return( $self->{reverse} );
}
sub stat
{
my $self = shift( @_ );
my $class = ref( $self );
return( $self->error( "stat() is not implemented by $class." ) );
}
# sub structure must be superseded by sub classes
sub structure
{
my $self = shift( @_ );
my $class = ref( $self );
return( $self->error( "structure() is not implemented by $class." ) );
}
sub table { return( shift->{table} ); }
sub tie
{
my $self = shift( @_ );
my $q = $self->_reset_query;
return( $q->tie( @_ ) );
}
sub type { return( shift->_set_get_scalar( 'type', @_ ) ); }
sub types
{
my $self = shift( @_ );
$self->structure || return( $self->pass_error );
# my $types = $self->{types};
my $fields = $self->fields;
my $types = +{ map{ $_ => $fields->{ $_ }->type } keys( %$fields ) };
# return( $self->_clone( $types ) );
return( $types );
}
sub types_const
{
my $self = shift( @_ );
$self->structure || return( $self->pass_error );
my $fields = $self->fields;
# my $types = $self->{types_const};
my $types = +{ map{ $_ => $fields->{ $_ }->datatype } keys( %$fields ) };
# return( $self->_clone( $types ) );
return( $types );
}
sub unlock
{
my $self = shift( @_ );
my $class = ref( $self );
return( $self->error( "unlock() is not implemented by $class." ) );
}
sub unix_timestamp { return( shift->_method_to_query( 'unix_timestamp', @_ ) ); }
sub update
{
my $self = shift( @_ );
my $q = $self->_reset_query;
# If the user wants to execute this, then we reset the query,
# but if the user wants to call other methods chained like as_string we don't do anything
# CORE::delete( $self->{query_reset} ) if( !defined( wantarray() ) );
if( want('VOID') || want('OBJECT') )
( run in 0.698 second using v1.01-cache-2.11-cpan-39bf76dae61 )