Commit | Line | Data |
71ef99d5 |
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; |