★★★ Доброго всем ★★★
Mojo::Pg::Che
¡ ¡ ¡ ALL GLORY TO GLORIA ! ! !
NAME
Mojo::Pg::Che - mix of great Mojo::Pg and DBI
DESCRIPTION
See Mojo::Pg
VERSION
Version 0.857
SYNOPSIS
use
Mojo::Pg::Che;
my
$pg
= Mojo::Pg::Che->
connect
(
"dbname=test;"
,
"postgres"
,
'pg-pwd'
, \
%attrs
,
max_connections
=>10);
# or
my
$pg
= Mojo::Pg::Che->new
->dsn(
"DBI:Pg:dbname=test;"
)
->username(
"postgres"
)
->password(
'pg--pw'
)
->options(\
%attrs
)
->
connect
();
# or as URL
# or
my
$pg
= Mojo::Pg::Che->new(
dsn
=>
"dbname=test;"
,
username
=>
"postgres"
,
password
=>
'pg-pwd'
,
options
=>\
%attrs
,
max_connections
=>10);
# from parent Mojo::Pg only
my
$pg2
= Mojo::Pg::Che->new(
$che
->pg);
# Bloking query
my
$result
=
$pg
->query(
'select ...'
,
undef
,
@bind
);
# Cached query
my
$result
=
$pg
->query(
'select ...'
, {
Cached
=> 1, ...},
@bind
);
# prepare sth
my
$sth
=
$pg
->prepare(
'select ...'
);
# Non-blocking query for async sth
$pg
->query(
$sth
,
undef
,
@bind
,
sub
{
my
(
$db
,
$err
,
$result
) =
@_
; ...});
Mojo::IOLoop->start
unless
Mojo::IOLoop->is_running;
# Mojo::Pg style
my
$now
=
$pg
->db->query(
'select now() as now'
)->hash->{now};
$pg
->db->query(
'select pg_sleep(?::int), now() as now'
,
undef
, 2,
$cb
);
# DBI style
my
$now
=
$pg
->selectrow_hashref(
'select now() as now'
)->{now};
my
$now
=
$pg
->db->selectrow_hashref(
'select now() as now'
)->{now};
my
$now
=
$pg
->selectrow_array(
'select now() as now'
);
Transaction syntax
eval
{
my
$tx
=
$pg
->begin;
$tx
->query(
'insert into foo (name) values (?)'
,
'bar'
);
$tx
->
do
(
'insert into foo (name) values (?)'
,
'baz'
);
$tx
->commit;
};
die
$@
if
$@;
my
$db
=
$pg
->db;
$db
->begin;
$db
->
do
(
'insert into foo (name) values (?)'
,
'bazzzz'
);
$db
->rollback;
$db
->begin;
$db
->query(
'insert into foo (name) values (?)'
,
'barrr'
);
$db
->commit;
Non-blocking query
my
@results
;
my
$cb
=
sub
{
my
(
$db
,
$err
,
$results
) =
@_
;
die
$err
if
$err
;
push
@results
,
$results
;
};
$pg
->query(
'select ?::date as d, pg_sleep(?::int)'
,
undef
, (
"2016-06-$_"
, 1),
$cb
)
for
17..23;
Mojo::IOLoop->start
unless
Mojo::IOLoop->is_running;
like(
$_
->hash->{d},
qr/2016-06-\d+/
,
'correct async query'
)
for
@results
;
ATTRIBUTES
See main <Mojo::Pg#ATTRIBUTES> and source code.
METHODS
Mojo::Pg::Che does implement the following methods.
Mojo::Pg-style connecting.
my
$pg
= Mojo::Pg::Che->new
->dsn(
"DBI:Pg:dbname=test;"
)
->username(
"postgres"
)
->password(
'pg--pw'
)
->options(\
%attrs
)
->
connect
();
# URL
# parent Mojo::Pg only
my
$pg2
= Mojo::Pg::Che->new(
$pg
->pg);
# or
my
$pg
= Mojo::Pg::Che->new(
dsn
=>
"dbname=test;"
,
username
=>
"postgres"
,
password
=>
'pg-pwd'
,
options
=>\
%attrs
,
max_connections
=>10);
connect
DBI-style of new object instance. See DBI#connect
my
$pg
= Mojo::Pg::Che->
connect
(
"dbname=test;"
,
"postgres"
,
'pg-pwd'
, \
%attrs
,
max_connections
=>10);
NOTE. Dont set object attrs after ->connect()
.
db
From method of Mojo::Pg#db. Because can first input param - DBI database handler (when prepared statement used).
prepare
Prepare and return DBI statement handler for query string.
prepare_cached
Prepare and return DBI cached statement handler for query string.
query
Like Mojo::Pg::Database#query but input params - Mojo::Pg::Che#Params-for-quering-methods
Blocking query without attr Async or callback.
Non-blocking query with attr Async or callback.
select
Same method query
.
selectrow_array
DBI style quering. See DBI#selectrow_array. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
selectrow_arrayref
DBI style quering. See DBI#selectrow_arrayref. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
selectrow_hashref
DBI style quering. See DBI#selectrow_hashref. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
selectall_arrayref
DBI style quering. See DBI#selectall_arrayref. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
selectall_hashref
DBI style quering. See DBI#selectall_hashref. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
selectcol_arrayref
DBI style quering. See DBI#selectcol_arrayref. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
do
DBI style quering. See DBI#do. Blocking | non-blocking. Input params - Mojo::Pg::Che#Params-for-quering-methods.
begin
Start transaction and return new Mojo::Pg::Che::Database object which attr {tx}
is a Mojo::Pg::Transaction object. Sinonyms are: ->tx
and ->begin_work
.
Params for quering methods
The methods query
, select...
, do
has next ordered input params:
String query | statement handler object
Hashref attrs (optional)
Array of bind values (optional)
Last param - callback/coderef for non-blocking (optional)
HARD REDEFINED SUBROUTINES
Mojo::Pg::Che does redefine Mojo::Pg _enqueue and _dequeue subroutines.
SEE ALSO
AUTHOR
Михаил Че (Mikhail Che), <mche[-at-]cpan.org>
BUGS / CONTRIBUTING
Please report any bugs or feature requests at https://github.com/mche/Mojo-Pg-Che/issues. Pull requests also welcome.
COPYRIGHT
Copyright 2016+ Mikhail Che.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 108:
Unknown directive: =head