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 )