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