DB-Object
view release on metacpan or search on metacpan
lib/DB/Object.pm view on Meta::CPAN
if( $cache_file->exists &&
$cache_file->is_file &&
!$cache_file->is_empty )
{
return( $sth );
}
$self->Module::Generic::serialise( $sth,
file => $cache_file,
lock => 1,
serialiser => $serialiser,
( $serialiser eq 'Sereal' ? ( freeze_callbacks => 1 ) : () ),
) || return( $self->pass_error );
}
elsif( $cache_query )
{
$repo->set( $sth );
$repo->unlock;
}
return( $sth );
}
lib/DB/Object.pm view on Meta::CPAN
return( $self->error( "No table name associated with this table object." ) );
if( $name !~ /^\w+[\w\-\.]*$/ )
{
return( $self->error( "The table name '$name' contains illegal characters." ) );
}
my $file = $cache_dir->child( "${prefix}-${name}.bin" );
my $tbl = $self->Module::Generic::serialise( $table,
file => $file,
lock => 1,
serialiser => $serialiser,
( $serialiser eq 'Sereal' ? ( freeze_callbacks => 1 ) : () ),
) || return( $self->pass_error );
return(1);
}
# The user has provided a table name, and thus expects the related cloned table object from the cache table repository.
# This is accessor mode.
elsif( !ref( $table ) || ( ref( $table ) && $self->_can_overload( $table => '""' ) ) )
{
$table = "$table";
if( $table !~ /^\w+[\w\-\.]*$/ )
{
lib/DB/Object/Query/Element.pm view on Meta::CPAN
if( $placeholder =~ /^$placeholder_re$/ && defined( $+{index} ) )
{
return(1);
}
return(0);
}
# The placeholder, such as ?, $2, ?2, or others supported by the driver
sub placeholder { return( shift->_set_get_scalar_as_object({
field => 'placeholder',
callbacks =>
{
set => sub
{
# $val is a scalar object (Module::Generic::Scalar)
my( $self, $val ) = @_;
my $placeholder_re = $self->query_object->database_object->_placeholder_regexp;
return( $val ) if( $self->_is_scalar( $val ) && $self->_can( $val => 'defined' ) && !$val->defined );
if( defined( $val ) && "$val" =~ /^(?:$placeholder_re)$/ )
{
# Could be undef
lib/DB/Object/Query/Element.pm view on Meta::CPAN
}
return( $val );
}
}
}, @_ ) ); }
sub query_object { return( shift->_set_get_object( 'query_object', 'DB::Object::Query', @_ ) ); }
# The field data type to be used when binding parameters
# sub type { return( shift->_set_get_scalar_as_object( 'type', @_ ) ); }
sub type { return( shift->_set_get_scalar_as_object( { field => 'type', callbacks =>
{
get => sub
{
my( $self, $val ) = @_;
my $field = $self->field;
if( ( !defined( $val ) || !$val->defined || !CORE::length( $val // '' ) ) &&
$self->_is_a( $field => 'DB::Object::Fields::Field' ) )
{
$val = $field->datatype->constant;
}
lib/DB/Object/Tables.pm view on Meta::CPAN
$self->_load_class( 'DB::Object::Constraint::Index' ) ||
return( $self->pass_error );
$args->{debug} = $self->debug if( !CORE::exists( $args->{debug} ) || !defined( $args->{debug} ) );
my $this = DB::Object::Constraint::Index->new( %$args ) ||
return( $self->pass_error( DB::Object::Constraint::Index->error ) );
return( $this );
}
sub no_bind { return( shift->_set_get_boolean({
field => 'no_bind',
callbacks =>
{
set => sub
{
my $self = shift( @_ );
my $val = shift( @_ );
return if( !defined( $val ) );
return( $val ) if( !$val );
my $q = $self->_reset_query;
my $where = $q->where();
my $group = $q->group();
( run in 0.988 second using v1.01-cache-2.11-cpan-39bf76dae61 )