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