AnyEvent-Pg
view release on metacpan or search on metacpan
lib/AnyEvent/Pg.pm view on Meta::CPAN
%$self = ();
}
package AnyEvent::Pg::Watcher;
sub _new {
my ($class, $query) = @_;
my $self = \$query;
bless $self, $class;
}
sub DESTROY {
# cancel query
my $query = ${shift()};
delete @{$query}{qw(on_error on_result on_done)};
$query->{canceled} = 1;
}
1;
__END__
=head1 NAME
AnyEvent::Pg - Query a PostgreSQL database asynchronously
=head1 SYNOPSIS
use AnyEvent::Pg;
my $db = AnyEvent::Pg->new("dbname=foo",
on_connect => sub { ... });
$db->push_query(query => 'insert into foo (id, name) values(7, \'seven\')',
on_result => sub { ... },
on_error => sub { ... } );
# Note that $1, $2, etc. are Pg placeholders, nothing to do with
# Perl regexp captures!
$db->push_query(query => ['insert into foo (id, name) values($1, $2)', 7, 'seven']
on_result => sub { ... }, ...);
$db->push_prepare(name => 'insert_into_foo',
query => 'insert into foo (id, name) values($1, $2)',
on_result => sub { ... }, ...);
$db->push_query_prepared(name => 'insert_into_foo',
args => [7, 'seven'],
on_result => sub { ... }, ...);
=head1 DESCRIPTION
*******************************************************************
*** ***
*** NOTE: This is a very early release that may contain lots of ***
*** bugs. The API is not stable and may change between releases ***
*** ***
*******************************************************************
This library allows to query PostgreSQL databases asynchronously. It
is a thin layer on top of L<Pg::PQ> that integrates it inside the
L<AnyEvent> framework.
=head2 API
The following methods are available from the AnyEvent::Pg class:
=over 4
=item $adb = AnyEvent::Pg->new($conninfo, %opts)
Creates and starts the connection to the database. C<$conninfo>
contains the parameters defining how to connect to the database (see
libpq C<PQconnectdbParams> and C<PQconnectdb> documentation for the
details:
L<http://www.postgresql.org/docs/9.0/interactive/libpq-connect.html>).
The following options are accepted:
=over 4
=item on_connect => sub { ... }
The given callback is invoked after the connection has been
successfully established.
=item on_connect_error => sub { ... }
This callback is invoked if a fatal error happens when establishing
the connection to the database server.
=item on_empty_queue => sub { ... }
This callback is called every time the query queue becomes empty.
=item on_notify => sub { ... }
This callback is called when a notification is received.
=item on_error => sub { ... }
This callback is called when some error happens.
=item timeout => $seconds
Sets the default timeout for network activity. When nothing happens on
the network for the given seconds while processing some query, the
connection is marked as dead.
=back
=item $w = $adb->push_query(%opts)
Pushes a query into the object queue that will eventually be
dispatched to the database.
Returns a query watcher object. Destroying the watcher (usually when
it gets unreferenced) cancels the query.
The accepted options are:
=over
( run in 1.128 second using v1.01-cache-2.11-cpan-140bd7fdf52 )