Aion-Query
view release on metacpan or search on metacpan
t/aion/query.t view on Meta::CPAN
::is_deeply scalar do {\%author}, scalar do {{"Pushkin A.S." => 1, "Pushkin A." => 2, "Alice" => 3}}, '\%author # --> {"Pushkin A.S." => 1, "Pushkin A." => 2, "Alice" => 3}';
#
# ÐÑли нÑжен Ñ
ÐµÑ Ð²Ð¸Ð´Ð° иденÑиÑикаÑÐ¾Ñ â ÑÑÑока:
#
my %author = query_slice id => {}, "SELECT id, name FROM author";
my $rows = {
1 => {name => "Pushkin A.S.", id => 1},
2 => {name => "Pushkin A.", id => 2},
3 => {name => "Alice", id => 3},
};
::is_deeply scalar do {\%author}, scalar do {$rows}, '\%author # --> $rows';
#
# ÐÑли Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ ÑооÑвеÑÑÑвÑÐµÑ Ð½ÐµÑколÑко ÑÑÑок, Ñо логиÑно ÑобÑаÑÑ Ð¸Ñ
в маÑÑивÑ:
#
query "CREATE TABLE book (
id SERIAL PRIMARY KEY,
author_id INT NOT NULL REFERENCES author(id),
title TEXT NOT NULL
)";
stores book => [
{author_id => 1, title => "Mir"},
{author_id => 1, title => "Kiss in night"},
{author_id => 3, title => "Mips as cpu"},
];
my %author = query_slice author_id => ["title"], "SELECT author_id, title FROM book ORDER BY title";
my $rows = {
1 => ["Kiss in night", "Mir"],
3 => ["Mips as cpu"],
};
::is_deeply scalar do {\%author}, scalar do {$rows}, '\%author # --> $rows';
#
# ÐÑ Ð¸ ÑÑÑоки Ñо вÑеми полÑми:
#
my %author = query_slice author_id => [], "SELECT author_id, title FROM book ORDER BY title";
my $rows = {
1 => [
{title => "Kiss in night", author_id => 1},
{title => "Mir", author_id => 1},
],
3 => [
{title => "Mips as cpu", author_id => 3}
],
};
::is_deeply scalar do {\%author}, scalar do {$rows}, '\%author # --> $rows';
#
# ## query_attach ($rows, $attach, $query, %kw)
#
# ÐодÑоединÑÐµÑ Ð² ÑезÑлÑÑÐ°Ñ Ð·Ð°Ð¿ÑоÑа ÑезÑлÑÑÐ°Ñ Ð´ÑÑгого запÑоÑа.
#
# `$attach` ÑодеÑÐ¶Ð¸Ñ ÑÑи клÑÑа ÑеÑез двоеÑоÑие: клÑÑ Ð´Ð»Ñ Ð¿ÑиÑоединÑемÑÑ
даннÑÑ
, ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð· `$rows` и ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð· `$query`. Ðо ÑÑолбÑам пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¾Ð±ÑеÐ...
#
# ÐозвÑаÑÐ°ÐµÑ ÑÑнкÑÐ¸Ñ Ð¼Ð°ÑÑив Ñ ÑезÑлÑÑаÑом запÑоÑа (`$query`), в коÑоÑÑй можно пÑиаÑÑаÑиÑÑ ÐµÑÑ ÑÑо-Ñо.
#
done_testing; }; subtest 'query_attach ($rows, $attach, $query, %kw)' => sub {
my $authors = query "SELECT id, name FROM author";
my $res = [
{name => "Pushkin A.S.", id => 1},
{name => "Pushkin A.", id => 2},
{name => "Alice", id => 3},
];
::is_deeply scalar do {$authors}, scalar do {$res}, '$authors # --> $res';
my @books = query_attach $authors => "books:id:author_id" => "SELECT author_id, title FROM book ORDER BY title";
my $attaches = [
{name => "Pushkin A.S.", id => 1, books => [
{title => "Kiss in night", author_id => 1},
{title => "Mir", author_id => 1},
]},
{name => "Pushkin A.", id => 2, books => []},
{name => "Alice", id => 3, books => [
{title => "Mips as cpu", author_id => 3},
]},
];
::is_deeply scalar do {$authors}, scalar do {$attaches}, '$authors # --> $attaches';
my $books = [
{title => "Kiss in night", author_id => 1},
{title => "Mips as cpu", author_id => 3},
{title => "Mir", author_id => 1},
];
::is_deeply scalar do {\@books}, scalar do {$books}, '\@books # --> $books';
#
# ## query_col ($query, %params)
#
# ÐозвÑаÑÐ°ÐµÑ Ð¾Ð´Ð¸Ð½ ÑÑолбеÑ.
#
done_testing; }; subtest 'query_col ($query, %params)' => sub {
::is_deeply scalar do {query_col "SELECT name FROM author ORDER BY name"}, scalar do {["Alice", "Pushkin A.", "Pushkin A.S."]}, 'query_col "SELECT name FROM author ORDER BY name" # --> ["Alice", "Pushkin A.", "Pushkin A.S."]';
::like scalar do {eval {query_col "SELECT id, name FROM author"}; $@}, qr!Only one column is acceptable\!!, 'eval {query_col "SELECT id, name FROM author"}; $@ # ~> Only one column is acceptable!';
#
# ## query_row ($query, %params)
#
# ÐозвÑаÑÐ°ÐµÑ Ð¾Ð´Ð½Ñ ÑÑÑокÑ.
#
done_testing; }; subtest 'query_row ($query, %params)' => sub {
::is_deeply scalar do {query_row "SELECT name FROM author WHERE id=2"}, scalar do {{name => "Pushkin A."}}, '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";
::is scalar do {$id}, scalar do{2}, '$id # -> 2';
::is scalar do {$name}, "Pushkin A.", '$name # => Pushkin A.';
::like scalar do {eval { query_row "SELECT id, name FROM author" }; $@}, qr!A few lines\!!, 'eval { query_row "SELECT id, name FROM author" }; $@ # ~> A few lines!';
#
# ## query_row_ref ($query, %params)
#
# Ðак `query_row`, но вÑегда возвÑаÑÐ°ÐµÑ ÑкалÑÑ.
#
done_testing; }; subtest 'query_row_ref ($query, %params)' => sub {
my @x = query_row_ref "SELECT name FROM author WHERE id=2";
::is_deeply scalar do {\@x}, scalar do {[{name => "Pushkin A."}]}, '\@x # --> [{name => "Pushkin A."}]';
::like scalar do {eval {query_row_ref "SELECT name FROM author"}; $@}, qr!A few lines\!!, 'eval {query_row_ref "SELECT name FROM author"}; $@ # ~> A few lines!';
#
# ## query_scalar ($query, %params)
#
# ÐозвÑаÑÐ°ÐµÑ Ð¿ÐµÑвое знаÑение. ÐапÑÐ¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ возвÑаÑаÑÑ Ð¾Ð´Ð½Ñ ÑÑÑокÑ, инаÑе â вÑбÑаÑÑÐ²Ð°ÐµÑ Ð¸ÑклÑÑение.
#
done_testing; }; subtest 'query_scalar ($query, %params)' => sub {
::is scalar do {query_scalar "SELECT name FROM author WHERE id=2"}, "Pushkin A.", 'query_scalar "SELECT name FROM author WHERE id=2" # => Pushkin A.';
#
# ## make_query_for_order ($order, $next)
#
# Ð¡Ð¾Ð·Ð´Ð°ÐµÑ ÑÑловие запÑоÑа ÑÑÑаниÑÑ Ð½Ðµ по ÑмеÑениÑ, а по **пагинаÑии кÑÑÑоÑа**.
#
# ÐÐ»Ñ ÑÑого он полÑÑÐ°ÐµÑ `$order` SQL-запÑоÑа и `$next` â ÑÑÑÐ»ÐºÑ Ð½Ð° ÑледÑÑÑÑÑ ÑÑÑаниÑÑ.
#
done_testing; }; subtest 'make_query_for_order ($order, $next)' => sub {
( run in 0.654 second using v1.01-cache-2.11-cpan-e1769b4cff6 )