KiokuDB
view release on metacpan or search on metacpan
lib/KiokuDB.pm view on Meta::CPAN
# return IDs only for unknown objects
if ( defined wantarray ) {
return $self->live_objects->objects_to_ids(@objects);
}
}
sub insert { shift->_insert( 1, @_ ) }
sub insert_nonroot { shift->_insert( 0, @_ ) }
sub update {
my ( $self, @args ) = @_;
my @objects = $self->_register(@args);
my $l = $self->live_objects;
croak "Object not in storage"
if grep { not $l->object_in_storage($_) } @objects;
$self->store_objects( shallow => 1, only_known => 1, objects => \@objects );
lib/KiokuDB/Collapser/Buffer.pm view on Meta::CPAN
$self->insert_to_backend($backend);
$self->update_entries( in_storage => 1 );
}
sub insert_to_backend {
my ( $self, $backend ) = @_;
$backend->insert($self->entries);
}
sub update_entries {
my ( $self, @shared_args ) = @_;
my ( $e, $o ) = ( $self->_entries, $self->_ids );
my $l = $self->live_objects;
my $args = $self->_entry_args;
foreach my $id ( keys %$e ) {
my ( $object, $entry ) = ( $o->{$id}, $e->{$id} );
lib/KiokuDB/LiveObjects.pm view on Meta::CPAN
return undef;
}
sub object_in_storage {
my ( $self, $object ) = @_;
$self->id_in_storage( $self->object_to_id($object) || return );
}
sub update_object_entry {
my ( $self, $object, $entry, %args ) = @_;
my $s = $self->current_scope or croak "no open live object scope";
my $info = $self->_objects->{$object} or croak "Object not yet registered";
$self->_entries->{$entry} = $info;
@{$info}{keys %args} = values %args;
weaken($info->{entry} = $entry);
lib/KiokuDB/LiveObjects.pm view on Meta::CPAN
if ( $entry ) {
$self->register_entry( $id => $entry, in_storage => 1 );
$self->register_object( $id => $object );
} else {
$self->register_object( $id => $object );
}
}
}
sub update_entries {
my ( $self, @pairs ) = @_;
my @entries;
while ( @pairs ) {
my ( $object, $entry ) = splice @pairs, 0, 2;
$self->register_entry( $entry->id => $entry, in_storage => 1 );
unless ( $self->object_to_id($object) ) {
$self->register_object( $entry->id => $object );
lib/KiokuDB/Test/Fixture.pm view on Meta::CPAN
sub live_objects {
shift->directory->live_objects->live_objects
}
sub live_entries {
shift->directory->live_objects->live_entries
}
sub update_live_objects {
my $self = shift;
_lives_and_ret { $self->update( $self->live_objects ) } "updated live objects";
}
sub store_ok {
my ( $self, @objects ) = @_;
local $Test::Builder::Level = 1;
_lives_and_ret { $self->store( @objects ) } "stored " . scalar(grep { ref } @objects) . " objects";
}
sub update_ok {
my ( $self, @objects ) = @_;
_lives_and_ret { $self->update( @objects ) } "updated " . scalar(@objects) . " objects";
}
sub insert_ok {
my ( $self, @objects ) = @_;
_lives_and_ret { $self->insert( @objects ) } "inserted " . scalar(@objects) . " objects";
}
( run in 0.346 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )