FlatFile-DataStore

 view release on metacpan or  search on metacpan

lib/FlatFile/DataStore.pm  view on Meta::CPAN

sub read_record {
    my( $self, $fh, $seekpos ) = @_;

    # we don't call read_preamble() because we need len anyway
    my $len  = $self->preamblelen;
    my $sref = $self->read_bytes( $fh, $seekpos, $len ); 
    my $preamble = $self->new_preamble( { string => $$sref } );

    $seekpos    += $len;
    $len         = $preamble->reclen;
    my $recdata  = $self->read_bytes( $fh, $seekpos, $len ); 

    my $record = $self->new_record( {
        preamble => $preamble,
        data     => $recdata,  # scalar ref
        } );

    return $record;
}

#---------------------------------------------------------------------
# 
# =head2 read_preamble()
# 
# Takes an open file handle (probably the key file) and a seek

lib/FlatFile/DataStore/Tiehash.pm  view on Meta::CPAN

    }

    # for creates, $parms may be record, href, sref, or string
    else {
        if( !$reftype or $reftype eq "SCALAR" ) {  # string
            return $self->create({ data => $parms }); 
        }
        if( $reftype =~ /Record/ ) {
            return $self->create( $parms );
        }
        if( $reftype eq 'HASH' ) {  # e.g., {data=>'recdata',user=>'userdata'}
            return $self->create( $parms );
        }
        else {
            croak qq/Unsupported ref type: $reftype/;
        }
    }
}

#---------------------------------------------------------------------
# DELETE() supports tied hash access

t/001-datastore.t  view on Meta::CPAN

    is( $delrec->indicator, $ds->crud()->{'delete'}, "deleted indicator()" );
    ok( $delrec->is_deleted, "is_deleted()" );

    $ds->userdata( "testing" );
    $record = $ds->create({ data => "Another test." });
    is( $record->user, "testing", "userdata()" );

    $record->data( "Yet another test." );
    $record = $ds->create( $record );
    $record2 = $ds->retrieve( $record->keynum );
    my $recdata  = $record->data;
    my $recdata2 = $record2->data;
    is( $recdata, $recdata2, "create( record )" );

    $record2 = $ds->create({ record => $record, user => 'other user' });
    is( $record2->user, 'other user', "create( record, user data )" );

    $record = $ds->create({ data => \"Apple", user => 'fruit' });
    is( $record->data, 'Apple', "create( scalar-ref, user data )" );
    is( $record->user, 'fruit', "create( scalar-ref, user data )" );
}

#---------------------------------------------------------------------



( run in 0.640 second using v1.01-cache-2.11-cpan-454fe037f31 )