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 )