1 package Catalyst::Model::DBIC::Schema::Types;
4 -declare => [qw/ConnectInfo SchemaClass/];
6 use MooseX::Types::Moose qw/ArrayRef HashRef Str ClassName/;
7 use Scalar::Util 'reftype';
10 use namespace::clean -except => 'meta';
17 via { Class::MOP::load_class($_); $_ };
21 where { exists $_->{dsn} },
22 message { 'Does not look like a valid connect_info' };
26 via { +{ dsn => $_ } },
31 if (!ref $_->[0]) { # array style
32 $connect_info{dsn} = shift @$_;
33 $connect_info{user} = shift @$_ if !ref $_->[0];
34 $connect_info{password} = shift @$_ if !ref $_->[0];
37 my $extra = shift @$_;
39 croak "invalid connect_info" unless reftype $extra eq 'HASH';
41 %connect_info = (%connect_info, %$extra);
44 croak "invalid connect_info" if @$_;
45 } elsif (@$_ == 1 && reftype $_->[0] eq 'HASH') {
48 croak "invalid connect_info";
54 # { connect_info => [ ... ] } coercion would be nice, but no chained coercions
55 # yet and no coercion from subtype (yet) but in Moose git already.
57 # via { $_->{connect_info} },