Class-DBI-Sweet
view release on metacpan or search on metacpan
lib/Class/DBI/Sweet.pm view on Meta::CPAN
$f_class = $rel->foreign_class;
my %attrs =
map { ( $_ => $data->{"sweet__${jnum}_${_}"} ) }
$f_class->columns('Essential');
$object->{"_${join}_object"} = $f_class->construct( \%attrs );
}
else {
croak("Unable to find relationship ${join} on ${class}");
}
}
}
$object->_attribute_store(%$data);
if ( $class->cache and $key ) {
$object->call_trigger('deflate_for_create');
$class->cache->set( $key, $object );
}
return $object;
}
sub retrieve {
my $class = shift;
if ( $class->cache ) {
if ( my $key = $class->cache_key(@_) ) {
if ( my $object = $class->cache->get($key) ) {
$object->call_trigger('select');
push (
@{ $class->profiling_data->{object_cache} },
[ 'HIT', $key ]
)
if ( $class->default_search_attributes->{profile_cache} );
return $object;
}
push ( @{ $class->profiling_data->{object_cache} },
[ 'MISS', $key ] )
if ( $class->default_search_attributes->{profile_cache} );
}
}
return $class->SUPER::retrieve(@_);
}
*create = \&insert;
sub insert {
my $self = shift;
if ( $self->cache ) {
$self->cache->set( $self->_staleness_cache_key, time() );
}
return $self->SUPER::insert(@_);
}
sub update {
my $self = shift;
if ( $self->cache ) {
$self->cache->remove( $self->cache_key );
$self->cache->set( $self->_staleness_cache_key, time() );
}
return $self->SUPER::update(@_);
}
sub delete {
my $self = shift;
return $self->_search_delete(@_) if not ref $self;
if ( $self->cache ) {
$self->cache->remove( $self->cache_key );
$self->cache->set( $self->_staleness_cache_key, time() );
}
return $self->SUPER::delete(@_);
}
#----------------------------------------------------------------------
# UNIVERSALLY UNIQUE IDENTIFIERS
#----------------------------------------------------------------------
sub _next_in_sequence {
my $self = shift;
if ( lc $self->sequence eq 'uuid' ) {
die "UUID features not available" unless $UUID_Is_Available;
if ( $^O eq 'MSWin32' ) {
return Win32API::GUID::CreateGuid();
}
else {
return Data::UUID->new->create_str;
}
}
return $self->SUPER::_next_in_sequence;
}
#----------------------------------------------------------------------
# MORE MAGIC
#----------------------------------------------------------------------
package Class::DBI::Sweet::SQL::Abstract;
use base qw/SQL::Abstract/;
use Carp qw/croak/;
sub where {
my ( $self, $where, $order, $must_join ) = @_;
my $me = $self->{cdbi_me_alias};
$self->{cdbi_table_aliases} = { $me => $self->{cdbi_class} };
$self->{cdbi_join_info} = {};
( run in 1.461 second using v1.01-cache-2.11-cpan-13bb782fe5a )