Parent Directory | Revision Log
Frey::DBI, simple DBI bridge which support sponge
1 | dpavlin | 366 | package Frey::DBI; |
2 | use Moose; | ||
3 | |||
4 | extends 'Frey'; | ||
5 | |||
6 | use DBI; | ||
7 | use Moose::Util::TypeConstraints; | ||
8 | |||
9 | subtype 'dsn' | ||
10 | => as 'Str' | ||
11 | => where { | ||
12 | DBI->parse_dsn( $_ ); | ||
13 | }; | ||
14 | |||
15 | has 'dsn' => ( | ||
16 | is => 'ro', | ||
17 | isa => 'dsn', | ||
18 | default => 'DBI:Pg:dbname=template1', | ||
19 | required => 1, | ||
20 | ); | ||
21 | |||
22 | has 'query' => ( | ||
23 | is => 'ro', | ||
24 | isa => 'Str', | ||
25 | required => 1, | ||
26 | default => 'select 42 as meaning_of_life', | ||
27 | ); | ||
28 | |||
29 | sub sponge { | ||
30 | my ( $self ) = @_; | ||
31 | |||
32 | my $dbh = DBI->connect( $self->dsn, '', '', { RaiseError => 1 } ) || die $DBI::errstr; | ||
33 | $dbh->do( qq{ set client_encoding='utf-8' } ); | ||
34 | |||
35 | my $sth = $dbh->prepare( $self->query ); | ||
36 | $sth->execute(); | ||
37 | |||
38 | return { | ||
39 | NAME => $sth->{NAME}, | ||
40 | rows => $sth->fetchall_arrayref, | ||
41 | }; | ||
42 | } | ||
43 | |||
44 | 1; |
ViewVC Help | |
Powered by ViewVC 1.1.26 |