convert from the bottom up
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Replicated / Types.pm
CommitLineData
dcdf7b2c 1package # hide from PAUSE
2 DBIx::Class::Storage::DBI::Replicated::Types;
3
0bbe6676 4use strict;
5use warnings;
6use Carp qw(confess);
9901aad7 7
0bbe6676 8use Scalar::Util qw(blessed looks_like_number reftype);
9901aad7 9
0bbe6676 10sub import {
11 my ($package, @methods) = @_;
12 my $caller = caller;
13 for my $method (@methods) {
14 { no strict;
15 *{"${caller}::${method}"} = sub {
16 my %args = @_;
17 sub { my $value = shift; &{$method}($value, %args) }
18 };
19 }
20 }
21}
9901aad7 22
0bbe6676 23sub error {
24 my ($default, $value, %args) = @_;
25 if(my $err = $args{err}) {
26 confess $err->($value);
27 } else {
28 confess $default;
29 }
30}
6a151f58 31
0bbe6676 32sub Defined {
33 error("Value $_[0] must be Defined", @_)
34 unless defined($_[0]);
35}
998373c2 36
0bbe6676 37sub UnDefined {
38 error("Value $_[0] must be UnDefined", @_)
39 unless !defined($_[0]);
40}
41
42sub Boolean {
43 error("$_[0] is not a valid Boolean", @_)
44 unless(!defined($_[0]) || $_[0] eq "" || "$_[0]" eq '1' || "$_[0]" eq '0');
45}
46
47sub Number {
48 error("weight must be a Number greater than or equal to 0, not $_[0]", @_)
49 unless(Defined(@_) && looks_like_number($_[0]));
50}
51
52sub Integer {
53 error("$_[0] must be an Integer", @_)
54 unless(Number(@_) && (int($_[0]) == $_[0]));
55}
56
57sub HashRef {
58 error("$_[0] must be a HashRef", @_)
59 unless(Defined(@_) && (reftype($_[0]) eq 'HASH'));
60}
61
62sub PositiveNumber {
63 error("value must be a Number greater than or equal to 0, not $_[0]", @_)
64 unless(Number(@_) && ($_[0] >= 0));
65}
66
67sub PositiveInteger {
68 error("Value must be a Number greater than or equal to 0, not $_[0]", @_)
69 unless(Integer(@_) && ($_[0] >= 0));
70}
71
72sub ClassName {
73 error("$_[0] is not a loaded Class", @_)
74 unless(Defined(@_) && ($_[0]->can('can')));
75}
76
77sub Object {
78 error("Value is not an Object", @_)
79 unless(Defined(@_) && blessed($_[0]));
80}
81
82sub DBICStorageDBI {
83 error("Need an Object of type DBIx::Class::Storage::DBI, not ".ref($_[0]), @_)
84 unless(Object(@_) && ($_[0]->isa('DBIx::Class::Storage::DBI')));
85}
86
87sub 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')));
90}
91
92sub DBICSchema {
93 error("Need an Object of type DBIx::Class::Schema, not ".ref($_[0]), @_)
94 unless(Object(@_) && ($_[0]->isa('DBIx::Class::Schema')));
95}
96
97sub DoesDBICStorageReplicatedBalancer {
98 error("$_[0] does not do DBIx::Class::Storage::DBI::Replicated::Balancer", @_)
99 unless(Object(@_) && $_[0]->does('DBIx::Class::Storage::DBI::Replicated::Balancer') );
100}
dcdf7b2c 101
9901aad7 1021;
0bbe6676 103