Aion-Query
view release on metacpan or search on metacpan
my $books = [
{title => "Kiss in night", author_id => 1},
{title => "Mips as cpu", author_id => 3},
{title => "Mir", author_id => 1},
];
\@books # --> $books
```
## query_col ($query, %params)
ÐозвÑаÑÐ°ÐµÑ Ð¾Ð´Ð¸Ð½ ÑÑолбеÑ.
```perl
query_col "SELECT name FROM author ORDER BY name" # --> ["Alice", "Pushkin A.", "Pushkin A.S."]
eval {query_col "SELECT id, name FROM author"}; $@ # ~> Only one column is acceptable!
```
## query_row ($query, %params)
ÐозвÑаÑÐ°ÐµÑ Ð¾Ð´Ð½Ñ ÑÑÑокÑ.
```perl
query_row "SELECT name FROM author WHERE id=2" # --> {name => "Pushkin A."}
my ($id, $name) = query_row "SELECT id, name FROM author WHERE id=2";
$id # -> 2
$name # => Pushkin A.
eval { query_row "SELECT id, name FROM author" }; $@ # ~> A few lines!
```
## query_row_ref ($query, %params)
Ðак `query_row`, но вÑегда возвÑаÑÐ°ÐµÑ ÑкалÑÑ.
```perl
my @x = query_row_ref "SELECT name FROM author WHERE id=2";
\@x # --> [{name => "Pushkin A."}]
eval {query_row_ref "SELECT name FROM author"}; $@ # ~> A few lines!
```
## query_scalar ($query, %params)
ÐозвÑаÑÐ°ÐµÑ Ð¿ÐµÑвое знаÑение. ÐапÑÐ¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ возвÑаÑаÑÑ Ð¾Ð´Ð½Ñ ÑÑÑокÑ, инаÑе â вÑбÑаÑÑÐ²Ð°ÐµÑ Ð¸ÑклÑÑение.
```perl
query_scalar "SELECT name FROM author WHERE id=2" # => Pushkin A.
```
## make_query_for_order ($order, $next)
Ð¡Ð¾Ð·Ð´Ð°ÐµÑ ÑÑловие запÑоÑа ÑÑÑаниÑÑ Ð½Ðµ по ÑмеÑениÑ, а по **пагинаÑии кÑÑÑоÑа**.
ÐÐ»Ñ ÑÑого он полÑÑÐ°ÐµÑ `$order` SQL-запÑоÑа и `$next` â ÑÑÑÐ»ÐºÑ Ð½Ð° ÑледÑÑÑÑÑ ÑÑÑаниÑÑ.
```perl
my ($select, $where, $order_sel) = make_query_for_order "name DESC, id ASC", undef;
$select # => name || ',' || id
$where # -> 1
$order_sel # -> undef
my @rows = query "SELECT $select as next FROM author WHERE $where LIMIT 2";
my $last = pop @rows;
($select, $where, $order_sel) = make_query_for_order "name DESC, id ASC", $last->{next};
$select # => name || ',' || id
$where # => (name < 'Pushkin A.'\nOR name = 'Pushkin A.' AND id >= '2')
$order_sel # --> [qw/name id/]
```
СмоÑÑиÑе Ñакже:
1. Article [Paging pages on social networks
](https://habr.com/ru/articles/674714/).
2. [SQL::SimpleOps->SelectCursor](https://metacpan.org/dist/SQL-SimpleOps/view/lib/SQL/SimpleOps.pod#SelectCursor)
## settings ($id, $value)
УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ ÐºÐ»ÑÑ Ð¸Ð· ÑаблиÑÑ `settings`.
```perl
query "CREATE TABLE settings(
id TEXT PRIMARY KEY,
value TEXT NOT NULL
)";
settings "x1" # -> undef
settings "x1", 10 # -> 1
settings "x1" # -> 10
```
## load_by_id ($tab, $pk, $fields, @options)
ÐозвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¿Ð¾ ее иденÑиÑикаÑоÑÑ.
```perl
load_by_id author => 2 # --> {id=>2, name=>"Pushkin A."}
load_by_id author => 2, "name as n" # --> {n=>"Pushkin A."}
load_by_id author => 2, "id+:x as n", x => 10 # --> {n=>12}
```
## insert ($tab, %x)
ÐобавлÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐµ иденÑиÑикаÑоÑ.
```perl
insert 'author', name => 'Masha' # -> 4
```
## update ($tab, $id, %params)
ÐбновлÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¿Ð¾ ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð¸ возвÑаÑÐ°ÐµÑ ÑÑÐ¾Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ.
```perl
update author => 3, name => 'Sasha' # -> 3
eval { update author => 5, name => 'Sasha' }; $@ # ~> Row author.id=5 is not!
```
## remove ($tab, $id)
УдалиÑÑ ÑÑÑÐ¾ÐºÑ Ð¸Ð· ÑаблиÑÑ Ð¿Ð¾ ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð¸ веÑнÑÑÑ ÑÑÐ¾Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ.
```perl
remove "author", 4 # -> 4
eval { remove author => 4 }; $@ # ~> Row author.id=4 does not exist!
```
( run in 1.614 second using v1.01-cache-2.11-cpan-39bf76dae61 )