Port ::Replicated from Moose to Moo+Type::Tiny
[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 warnings;
8 use strict;
9
10 use Type::Library
11   -base,
12   -declare => qw/BalancerClassNamePart Weight DBICSchema DBICStorageDBI/;
13 use Type::Utils -all;
14 use Types::Standard qw/Str Num/;
15 use Types::LoadableClass qw/LoadableClass/;
16
17 class_type DBICSchema, { class => 'DBIx::Class::Schema' };
18 class_type DBICStorageDBI, { class => 'DBIx::Class::Storage::DBI' };
19
20 subtype BalancerClassNamePart,
21   as LoadableClass;
22
23 coerce BalancerClassNamePart,
24   from Str,
25   via {
26     my $type = $_;
27     $type =~ s/\A::/DBIx::Class::Storage::DBI::Replicated::Balancer::/;
28     $type;
29   };
30
31 subtype Weight,
32   as Num,
33   where { $_ >= 0 },
34   message { 'weight must be a decimal greater than 0' };
35
36 1;