1 package # hide from PAUSE
2 DBIx::Class::Storage::DBI::Replicated::Types;
8 use Scalar::Util qw(blessed looks_like_number reftype);
11 my ($package, @methods) = @_;
13 for my $method (@methods) {
15 *{"${caller}::${method}"} = sub {
17 sub { my $value = shift; &{$method}($value, %args) }
24 my ($default, $value, %args) = @_;
25 if(my $err = $args{err}) {
26 confess $err->($value);
33 error("Value $_[0] must be Defined", @_)
34 unless defined($_[0]);
38 error("Value $_[0] must be UnDefined", @_)
39 unless !defined($_[0]);
43 error("$_[0] is not a valid Boolean", @_)
44 unless(!defined($_[0]) || $_[0] eq "" || "$_[0]" eq '1' || "$_[0]" eq '0');
48 error("weight must be a Number greater than or equal to 0, not $_[0]", @_)
49 unless(Defined(@_) && looks_like_number($_[0]));
53 error("$_[0] must be an Integer", @_)
54 unless(Number(@_) && (int($_[0]) == $_[0]));
58 error("$_[0] must be a HashRef", @_)
59 unless(Defined(@_) && (reftype($_[0]) eq 'HASH'));
63 error("value must be a Number greater than or equal to 0, not $_[0]", @_)
64 unless(Number(@_) && ($_[0] >= 0));
68 error("Value must be a Number greater than or equal to 0, not $_[0]", @_)
69 unless(Integer(@_) && ($_[0] >= 0));
73 error("$_[0] is not a loaded Class", @_)
74 unless(Defined(@_) && ($_[0]->can('can')));
78 error("Value is not an Object", @_)
79 unless(Defined(@_) && blessed($_[0]));
83 error("Need an Object of type DBIx::Class::Storage::DBI, not ".ref($_[0]), @_)
84 unless(Object(@_) && ($_[0]->isa('DBIx::Class::Storage::DBI')));
87 sub DBICStorageDBIReplicatedPool {
88 error("Need an Object of type DBIx::Class::Storage::DBI::Replicated::Pool, not ".ref($_[0]), @_)
89 unless(Object(@_) && ($_[0]->isa('DBIx::Class::Storage::DBI::Replicated::Pool')));
93 error("Need an Object of type DBIx::Class::Schema, not ".ref($_[0]), @_)
94 unless(Object(@_) && ($_[0]->isa('DBIx::Class::Schema')));
97 sub DoesDBICStorageReplicatedBalancer {
98 error("$_[0] does not do DBIx::Class::Storage::DBI::Replicated::Balancer", @_)
99 unless(Object(@_) && $_[0]->does('DBIx::Class::Storage::DBI::Replicated::Balancer') );