Data-TagDB

 view release on metacpan or  search on metacpan

lib/Data/TagDB.pm  view on Meta::CPAN

# licensed under Artistic License 2.0 (see LICENSE file)

# ABSTRACT: Work with Tag databases

package Data::TagDB;

use v5.10;
use strict;
use warnings;

use Scalar::Util qw(weaken blessed);

use Carp;
use DBI;

use Data::TagDB::Tag;
use Data::TagDB::Relation;
use Data::TagDB::Metadata;
use Data::TagDB::LinkIterator;
use Data::TagDB::MultiIterator;
use Data::TagDB::WellKnown;

lib/Data/TagDB.pm  view on Meta::CPAN

    } else {
        state $done = 0;
        my $tag = Data::TagDB::Tag->_new(db => $self, dbid => $dbid);

        if ($done++ > 1024) {
            $self->_cache_maintain;
            $done = 0;
        }

        $cache->{$dbid} = $tag;
        weaken($cache->{$dbid});

        return $tag;
    }
}

sub _tag_by_ise_cached {
    my ($self, $ise, $autocreate) = @_;
    if (defined $self->{cache_ise}{$ise}) {
        return $self->tag_by_dbid($self->{cache_ise}{$ise});
    } else {

lib/Data/TagDB/Migration.pm  view on Meta::CPAN

# licensed under Artistic License 2.0 (see LICENSE file)

# ABSTRACT: Work with Tag databases

package Data::TagDB::Migration;

use v5.10;
use strict;
use warnings;

use Scalar::Util qw(weaken);
use Carp;

use Data::TagDB;

use parent 'Data::TagDB::WeakBaseObject';

use constant RE_UUID => qr/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;

use constant {
    FORMAT_TAGPOOL_SOURCE_FORMAT => 'e5da6a39-46d5-48a9-b174-5c26008e208e',

lib/Data/TagDB/Migration.pm  view on Meta::CPAN


    $self = $pkg->_new(dbh => $dbh);

    $self->_create_tables;
    $self->_create_tag_null;
    $self->_create_hints_indispensable;

    $db = Data::TagDB->new($dbh);

    $self->{db} = $db;
    weaken($self->{db});

    $self->upgrade;

    $dbh->commit;

    return $db;
}


sub db {

lib/Data/TagDB/WeakBaseObject.pm  view on Meta::CPAN

# licensed under Artistic License 2.0 (see LICENSE file)

# ABSTRACT: Work with Tag databases

package Data::TagDB::WeakBaseObject;

use v5.10;
use strict;
use warnings;

use Scalar::Util qw(weaken);

use Carp;

our $VERSION = v0.12;


# ---- Private helpers ----

sub _new {
    my ($pkg, %opts) = @_;

    weaken($opts{db}) if defined $opts{db};

    return bless \%opts, $pkg;
}

1;

__END__

=pod



( run in 1.089 second using v1.01-cache-2.11-cpan-39bf76dae61 )