The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::Async::PostgreSQL - (preliminary) asynchronous PostgreSQL support for IO::Async

VERSION

version 0.007

SYNOPSIS

 use strict; use warnings;
 use IO::Async::Loop;
 use Net::Async::PostgreSQL::Client;

 my $loop = IO::Async::Loop->new;
 my $client = Net::Async::PostgreSQL::Client->new(
        host                    => $ENV{NET_ASYNC_POSTGRESQL_SERVER} || 'localhost',
        service                 => $ENV{NET_ASYNC_POSTGRESQL_PORT} || 5432,
        database                => $ENV{NET_ASYNC_POSTGRESQL_DATABASE},
        user                    => $ENV{NET_ASYNC_POSTGRESQL_USER},
        pass                    => $ENV{NET_ASYNC_POSTGRESQL_PASS},
 );
 $client->init;

 $client->configure(
        on_error        => sub {
                my ($self, %args) = @_;
                my $err = $args{error};
                warn "$_ => " . $err->{$_} . "\n" for sort keys %$err;
        },
        on_ready_for_query => sub {
                my $self = shift;
                unless($init) {
                        print "Server version " . $status{server_version} . "\n";
                        ++$init;
                }
                 unless(keys %sth) {
                         $self->simple_query(q{begin work});
                         my $sth = $self->prepare_async(
                                 sql => q{insert into sometable(name) values ($1) returning idsometable, name},
                                statement => 'new_value',
                        );
                 }
                $sth->bind("some more data");
        },
        on_parameter_status => sub {
                my $self = shift;
                my %args = @_;
                $status{$_} = $args{status}->{$_} for sort keys %{$args{status}};
        },
        on_row_description => sub {
                my $self = shift;
                my %args = @_;
                print '[' . join(' ', map { $_->{name} } @{$args{description}{field}}) . "]\n";
        },
        on_data_row => sub {
                my $self = shift;
                my %args = @_;
                print '[' . join(',', map { $_->{data} } @{$args{row}}) . "]\n";
                $loop->loop_stop;
        }
 );
 $loop->add($client);
 $client->connect;
 $loop->loop_forever;

DESCRIPTION

See Net::Async::PostgreSQL::Client or Protocol::PostgreSQL.

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

Copyright Tom Molesworth 2011. Licensed under the same terms as Perl itself.