Aion-Query

 view release on metacpan or  search on metacpan

t/aion/query.t  view on Meta::CPAN

use common::sense; use open qw/:std :utf8/;  use Carp qw//; use File::Basename qw//; use File::Slurper qw//; use File::Spec qw//; use File::Path qw//; use Scalar::Util qw//;  use Test::More 0.98;  BEGIN {     $SIG{__DIE__} = sub {         my ($s) = @...
# # NAME
# 
# Aion::Query - функциональный интерфейс для доступа к базам данных SQL (MySQL, MariaDB, Postgres и SQLite)
# 
# # VERSION
# 
# 0.0.5
# 
# # SYNOPSIS
# 
# File .config.pm:
#@> .config.pm
#>> package config;
#>> 
#>> config_module Aion::Query => {
#>>     DRV  => "SQLite",
#>>     BASE => "test-base.sqlite",
#>>     BQ => 0,
#>> };
#>> 
#>> 1;
#@< EOF
# 
subtest 'SYNOPSIS' => sub { 
use Aion::Query;

query "CREATE TABLE author (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL UNIQUE
)";

::is scalar do {insert "author", name => "Pushkin A.S."}, scalar do{1}, 'insert "author", name => "Pushkin A.S." # -> 1';

::is scalar do {touch "author", name => "Pushkin A."}, scalar do{2}, 'touch "author", name => "Pushkin A."    # -> 2';
::is scalar do {touch "author", name => "Pushkin A.S."}, scalar do{1}, 'touch "author", name => "Pushkin A.S."  # -> 1';
::is scalar do {touch "author", name => "Pushkin A."}, scalar do{2}, 'touch "author", name => "Pushkin A."    # -> 2';

::is scalar do {query_scalar "SELECT count(*) FROM author"}, scalar do{2}, 'query_scalar "SELECT count(*) FROM author"  # -> 2';

my @rows = query "SELECT *
FROM author
WHERE 1
    if_name>> AND name like :name
",
    if_name => Aion::Query::BQ == 0,
    name => "P%",
;

::is_deeply scalar do {\@rows}, scalar do {[{id => 1, name => "Pushkin A.S."}, {id => 2, name => "Pushkin A."}]}, '\@rows # --> [{id => 1, name => "Pushkin A.S."}, {id => 2, name => "Pushkin A."}]';

::is scalar do {$Aion::Query::DEBUG[1]}, "query: INSERT INTO author (name) VALUES ('Pushkin A.S.')", '$Aion::Query::DEBUG[1]  # => query: INSERT INTO author (name) VALUES (\'Pushkin A.S.\')';

# 
# # DESCRIPTION
# 
# `Aion::Query` позволяет строить SQL-запрос используя простой механизм шаблонов.
# 
# Обычно SQL-запросы строятся с помощью условий, что нагружает код.
# 
# Вторая проблема — размещение символов Юникода в однобайтовых кодировках, что уменьшает размер базы данных. Пока проблема решена тольк...



( run in 3.380 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )