7a1ba3edbc5d03f0aa7d6ec304d9c8c1400759b0
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Replicated / Types.pm
1 package # hide from PAUSE
2   DBIx::Class::Storage::DBI::Replicated::Types;
3
4 # DBIx::Class::Storage::DBI::Replicated::Types - Types used internally by
5 # L<DBIx::Class::Storage::DBI::Replicated>
6
7 use MooseX::Types
8   -declare => [qw/BalancerClassNamePart Weight/];
9 use MooseX::Types::Moose qw/ClassName Str Num/;
10
11 class_type 'DBIx::Class::Storage::DBI';
12 class_type 'DBIx::Class::Schema';
13
14 subtype BalancerClassNamePart,
15   as ClassName;
16
17 coerce BalancerClassNamePart,
18   from Str,
19   via {
20     my $type = $_;
21     if($type=~m/^::/) {
22       $type = 'DBIx::Class::Storage::DBI::Replicated::Balancer'.$type;
23     }
24     Class::MOP::load_class($type);
25     $type;
26   };
27
28 subtype Weight,
29   as Num,
30   where { $_ >= 0 },
31   message { 'weight must be a decimal greater than 0' };
32
33 # AUTHOR
34 #
35 #  John Napiorkowski <john.napiorkowski@takkle.com>
36 #
37 # LICENSE
38 #
39 #  You may distribute this code under the same terms as Perl itself.
40
41 1;