KiokuDB::Class - L<KiokuDB> specific metaclass


KiokuDB documentation Contained in the KiokuDB distribution.

Index


Code Index:

NAME

Top

KiokuDB::Class - KiokuDB specific metaclass

SYNOPSIS

Top

    package Foo;
    use KiokuDB::Class; # instead of Moose

    has bar => (
        traits => [qw(KiokuDB::Lazy)],
        ...
    );

DESCRIPTION

Top

This Moose wrapper provides some metaclass extensions in order to more tightly integrate your class with KiokuDB.

Currently only KiokuDB::Meta::Attribute::Lazy is set up (by extending Moose::Meta::Instance with a custom role to support it), but in the future indexing, identity, and various optimizations will be supported by this.


KiokuDB documentation Contained in the KiokuDB distribution.

#!/usr/bin/perl

package KiokuDB::Class;

use strict;
use warnings;

use Moose ();
use Moose::Exporter;
use Moose::Util::MetaRole;

use KiokuDB::Meta::Instance;
use KiokuDB::Meta::Attribute::Lazy;

use namespace::clean -except => 'meta';

Moose::Exporter->setup_import_methods( also => 'Moose' );

sub init_meta {
    my ( $class, %args ) = @_;

    my $for_class = $args{for_class};

    Moose->init_meta(%args);

    Moose::Util::MetaRole::apply_metaroles(
        for             => $for_class,
        class_metaroles => {
            instance => [qw(KiokuDB::Meta::Instance)],
        },
    );

    return Class::MOP::get_metaclass_by_name($for_class);
}

__PACKAGE__

__END__