10a0a044f125d6f60b79006309e0c0dd028e3121
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Admin / Types.pm
1 package # hide from PAUSE
2     DBIx::Class::Admin::Types;
3
4 use MooseX::Types -declare => [qw(
5     DBICConnectInfo
6 )];
7 use MooseX::Types::Moose qw/Int HashRef ArrayRef Str Any Bool/;
8 use MooseX::Types::JSON qw(JSON);
9
10 coerce ArrayRef,
11   from JSON,
12   via { _json_to_data ($_) };
13
14 coerce HashRef,
15   from JSON,
16   via { _json_to_data($_) };
17
18 subtype DBICConnectInfo,
19   as ArrayRef;
20
21 coerce DBICConnectInfo,
22   from JSON,
23    via { return _json_to_data($_) } ;
24
25 coerce DBICConnectInfo,
26   from Str,
27     via { return _json_to_data($_) };
28
29 coerce DBICConnectInfo,
30   from HashRef,
31    via { [ $_ ] };
32
33 sub _json_to_data {
34   my ($json_str) = @_;
35   my $json = JSON::Any->new(allow_barekey => 1, allow_singlequote => 1, relaxed=>1);
36   my $ret = $json->jsonToObj($json_str);
37   return $ret;
38 }
39
40 1;