1 |
package Frey::Types; |
2 |
use Moose::Util::TypeConstraints; |
3 |
|
4 |
use URI (); |
5 |
|
6 |
subtype 'Uri' |
7 |
=> as 'Object' |
8 |
=> where { $_->isa('URI') } |
9 |
; |
10 |
|
11 |
coerce 'Uri' |
12 |
=> from 'Object' |
13 |
=> via { $_->isa('URI') |
14 |
? $_ |
15 |
: Params::Coerce::coerce( 'URI', $_ ) } |
16 |
=> from 'Str' |
17 |
=> via { URI->new( $_ ) } |
18 |
; |
19 |
|
20 |
subtype 'Sponge' |
21 |
=> as 'HashRef' |
22 |
=> where { |
23 |
defined $_->{rows} || die "no rows in sponge"; |
24 |
ref( $_->{rows} ) eq 'ARRAY' || die "rows not ARRAY"; |
25 |
defined $_->{NAME} || die "no NAME in sponge"; |
26 |
} |
27 |
; |
28 |
|
29 |
use DBI (); |
30 |
|
31 |
subtype 'dsn' |
32 |
=> as 'Str' |
33 |
=> where { |
34 |
DBI->parse_dsn( $_ ); |
35 |
} |
36 |
; |
37 |
|
38 |
1; |