File-FStore

 view release on metacpan or  search on metacpan

lib/File/FStore.pm  view on Meta::CPAN


use v5.10;
use strict;
use warnings;

use Carp;
use DBI;
use File::Spec;
use Data::Identifier;
use Data::Identifier::Generate;
use Scalar::Util qw(weaken);

use File::FStore::File;

use parent 'Data::Identifier::Interface::Known';

our $VERSION = v0.05;

use constant {
    DEFAULT_LINK_STYLE  => '1-level',
    DEFAULT_STORE_STYLE => '1-level-contentise',

lib/File/FStore.pm  view on Meta::CPAN

        transaction_count => 0,
        link_style => DEFAULT_LINK_STYLE,
        store_style => DEFAULT_STORE_STYLE,
    }, $pkg;

    foreach my $key (keys %_types) {
        my $v = delete $opts{$key};
        next unless defined $v;
        croak 'Invalid type for key: '.$key unless eval {$v->isa($_types{$key})};
        $self->{$key} = $v;
        weaken($self->{$key}) if $weak;
    }

    if (defined(my $link_style = delete $opts{link_style})) {
        $link_style = DEFAULT_LINK_STYLE if $link_style eq 'default';
        croak 'Not a valid link style: '.$link_style unless defined $_valid_link_styles{$link_style};
        $self->{link_style} = $link_style;
    }

    if (defined(my $store_style = delete $opts{store_style})) {
        $store_style = DEFAULT_STORE_STYLE if $store_style eq 'default';

lib/File/FStore.pm  view on Meta::CPAN

sub attach {
    my ($self, %opts) = @_;
    my $weak = delete $opts{weak};

    foreach my $key (keys %_types) {
        my $v = delete $opts{$key};
        next unless defined $v;
        croak 'Invalid type for key: '.$key unless eval {$v->isa($_types{$key})};
        $self->{$key} //= $v;
        croak 'Missmatch for key: '.$key unless $self->{$key} == $v;
        weaken($self->{$key}) if $weak;
    }

    croak 'Stray options passed' if scalar keys %opts;
}


#@returns Data::TagDB
sub db {
    my ($self, %opts) = @_;
    return $self->{db} if defined $self->{db};

lib/File/FStore.pm  view on Meta::CPAN

(since v0.05)

The style to use for storing files. One of: C<1-level-contentise>, or C<1-level-contentise>.

B<Note:>
This does not affect already existing files.

=item C<weak>

Marks the value for C<db>, C<extractor>, C<fii> as weak.
If only a specific one needs needs to be weaken use L</attach>.

=back

=head2 close

    $store->close;

Closes the store. Any interaction with this object or any related objects after this call is invalid.

=head2 setting



( run in 0.433 second using v1.01-cache-2.11-cpan-1f129e94a17 )