diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/Net/Riak/Role/Base.pm | 28 | ||||
| -rw-r--r-- | lib/Net/Riak/Role/Replica.pm | 25 |
2 files changed, 53 insertions, 0 deletions
diff --git a/lib/Net/Riak/Role/Base.pm b/lib/Net/Riak/Role/Base.pm new file mode 100644 index 0000000..fbeb9ba --- /dev/null +++ b/lib/Net/Riak/Role/Base.pm @@ -0,0 +1,28 @@ +package Net::Riak::Role::Base; + +use MooseX::Role::Parameterized; + +parameter classes => ( + isa => 'ArrayRef', + required => 1, +); + +role { + my $p = shift; + + my $attributes = $p->classes; + + foreach my $attr (@$attributes) { + my $name = $attr->{name}; + my $required = $attr->{required}, + my $class = "Net::Riak::" . (ucfirst $name); + has $name => ( + is => 'rw', + isa => $class, + required => $required, + ); + } +}; + +1; + diff --git a/lib/Net/Riak/Role/Replica.pm b/lib/Net/Riak/Role/Replica.pm new file mode 100644 index 0000000..d990de2 --- /dev/null +++ b/lib/Net/Riak/Role/Replica.pm @@ -0,0 +1,25 @@ +package Net::Riak::Role::Replica; + +use MooseX::Role::Parameterized; + +parameter keys => ( + isa => 'ArrayRef', + required => 1, +); + +role { + my $p = shift; + + my $keys = $p->keys; + + foreach my $k (@$keys) { + has $k => ( + is => 'rw', + isa => 'Int', + lazy => 1, + default => sub { (shift)->client->$k } + ); + } +}; + +1; |
