1package # hide from PAUSE
2    DBIx::Class::Admin::Types;
3
4use MooseX::Types -declare => [qw(
5    DBICConnectInfo
6    DBICArrayRef
7    DBICHashRef
8)];
9use MooseX::Types::Moose qw/Int HashRef ArrayRef Str Any Bool/;
10use MooseX::Types::JSON qw(JSON);
11
12subtype DBICArrayRef,
13    as ArrayRef;
14
15subtype DBICHashRef,
16    as HashRef;
17
18coerce DBICArrayRef,
19  from JSON,
20  via { _json_to_data ($_) };
21
22coerce DBICHashRef,
23  from JSON,
24  via { _json_to_data($_) };
25
26subtype DBICConnectInfo,
27  as ArrayRef;
28
29coerce DBICConnectInfo,
30  from JSON,
31   via { return _json_to_data($_) } ;
32
33coerce DBICConnectInfo,
34  from Str,
35    via { return _json_to_data($_) };
36
37coerce DBICConnectInfo,
38  from HashRef,
39   via { [ $_ ] };
40
41sub _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
481;
49