summaryrefslogtreecommitdiff
path: root/lib/Net/Riak/Role
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/Net/Riak/Role/Base.pm28
-rw-r--r--lib/Net/Riak/Role/Replica.pm25
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;