Aion-Query
view release on metacpan or search on metacpan
lib/Aion/Query.md view on Meta::CPAN
# DESCRIPTION
`Aion::Query` позволÑÐµÑ ÑÑÑоиÑÑ SQL-запÑÐ¾Ñ Ð¸ÑполÑзÑÑ Ð¿ÑоÑÑой меÑ
анизм Ñаблонов.
ÐбÑÑно SQL-запÑоÑÑ ÑÑÑоÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑловий, ÑÑо нагÑÑÐ¶Ð°ÐµÑ ÐºÐ¾Ð´.
ÐÑоÑÐ°Ñ Ð¿Ñоблема â ÑазмеÑение Ñимволов Юникода в однобайÑовÑÑ
кодиÑовкаÑ
, ÑÑо ÑменÑÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ðока пÑоблема ÑеÑена ÑолÑко...
# SUBROUTINES
## query ($query, %params)
ÐÑедоÑÑавлÑÐµÑ SQL-запÑоÑÑ (DCL, DDL, DQL и DML) к СУÐÐ Ñ ÐºÐ²Ð¾ÑиÑованием паÑамеÑÑов.
```perl
query "SELECT * FROM author WHERE name=:name", name => 'Pushkin A.S.' # --> [{id=>1, name=>"Pushkin A.S."}]
```
## LAST_INSERT_ID ()
ÐозвÑаÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ñледней вÑÑавки.
```perl
query "INSERT INTO author (name) VALUES (:name)", name => "Alice" # -> 1
LAST_INSERT_ID # -> 3
```
## quote ($scalar)
ÐвоÑиÑÑÐµÑ ÑкалÑÑ Ð´Ð»Ñ SQL-запÑоÑа.
```perl
quote undef # => NULL
quote "abc" # => 'abc'
quote 123 # => 123
quote "123" # => '123'
quote(0+"123") # => 123
quote(123 . "") # => '123'
quote 123.0 # => 123.0
quote(0.0+"126") # => 126
quote("127"+0.0) # => 127
quote("128"-0.0) # => 128
quote("129"+1.e-100) # => 129.0
# use for insert formula: SELECT :x as summ â x => \"xyz + 123"
quote \"without quote" # => without quote
# use in: WHERE id in (:x)
quote [1,2,"5"] # => 1, 2, '5'
# use in: INSERT INTO author VALUES :x
quote [[1, 2], [3, "4"]] # => (1, 2), (3, '4')
# use in multiupdate: UPDATE author SET name=CASE id :x ELSE null END
quote \[2=>'Pushkin A.', 1=>'Pushkin A.S.'] # => WHEN 2 THEN 'Pushkin A.' WHEN 1 THEN 'Pushkin A.S.'
# use for UPDATE SET :x or INSERT SET :x
quote {name => 'A.S.', id => 12} # => id = 12, name = 'A.S.'
[map quote, -6, "-6", 1.5, "1.5"] # --> [-6, "'-6'", 1.5, "'1.5'"]
```
## query_prepare ($query, %param)
ÐаменÑÐµÑ Ð¿Ð°ÑамеÑÑÑ (`%param`) в запÑоÑе (`$query`) и возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾. ÐаÑамеÑÑÑ Ð·Ð°ÐºÐ»ÑÑаÑÑÑÑ Ð² кавÑÑки ÑеÑез подпÑогÑÐ°Ð¼Ð¼Ñ `quote`.
ÐаÑамеÑÑÑ Ð²Ð¸Ð´Ð° `:x` бÑдÑÑ ÐºÐ²Ð¾ÑиÑоваÑÑÑÑ Ñ ÑÑÑÑом Ñлагов ÑкалÑÑа, коÑоÑÑе ÑкажÑÑ, ÑÑо в нÑм наÑ
одиÑÑÑ: ÑÑÑока, Ñелое или ÑиÑло Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей зÐ...
ЧÑÐ¾Ð±Ñ Ñвно ÑказаÑÑ Ñип ÑкалÑÑа иÑполÑзÑйÑе пÑеÑикÑÑ: `:^x` â Ñелое, `:.x` â ÑÑÑока, `:~x` â плаваÑÑее.
```perl
query_prepare "INSERT author SET name IN (:name)", name => ["Alice", 1, 1.0] # => INSERT author SET name IN ('Alice', 1, 1.0)
query_prepare ":x :^x :.x :~x", x => "10" # => '10' 10 10.0 '10'
my $query = query_prepare "SELECT *
FROM author
words*>> JOIN word:_
WHERE 1
name>> AND name like :name
",
name => "%Alice%",
words => [1, 2, 3],
;
my $res = << 'END';
SELECT *
FROM author
JOIN word1
JOIN word2
JOIN word3
WHERE 1
AND name like '%Alice%'
END
$query # -> $res
```
## query_do ($query)
ÐÑполнÑÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾ ÑезÑлÑÑаÑ.
```perl
query_do "SELECT count(*) as n FROM author" # --> [{n=>3}]
query_do "SELECT id FROM author WHERE id=2" # --> [{id=>2}]
```
## query_ref ($query, %kw)
Ðак `query`, но вÑегда возвÑаÑÐ°ÐµÑ ÑкалÑÑ.
```perl
my @res = query_ref "SELECT id FROM author WHERE id=:id", id => 2;
\@res # --> [[ {id=>2} ]]
```
## query_sth ($query, %kw)
Ðак `query`, но возвÑаÑÐ°ÐµÑ `$sth`.
( run in 2.359 seconds using v1.01-cache-2.11-cpan-13bb782fe5a )