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