Aion-Query
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Aion/Query.pm view on Meta::CPAN
package Aion::Query;
use 5.22.0;
no strict; no warnings; no diagnostics;
use common::sense;
our $VERSION = "0.0.3";
use Aion::Format qw//;
use Aion::Format::Json qw//;
use B qw//;
use DBI qw//;
use Scalar::Util qw//;
use List::Util qw//;
use Aion::Format qw//;
use Aion::Format::Json qw//;
use Exporter qw/import/;
our @EXPORT = our @EXPORT_OK = grep {
ref \$Aion::Query::{$_} eq "GLOB"
&& *{$Aion::Query::{$_}}{CODE} && !/^(_|(NaN|import)\z)/n
} keys %Aion::Query::;
use config {
DSN => undef,
DRV => 'mysql',
BASE => 'BASE',
HOST => undef,
PORT => undef,
SOCK => undef,
USER => 'root',
PASS => 123,
CONN => undef,
DEBUG => 0,
MAX_QUERY_ERROR => 1000,
BQ => 1,
};
# ФоÑмиÑÑÐµÑ DSN на оÑнове конÑига
our $DEFAULT_DSN;
sub default_dsn() {
$DEFAULT_DSN //= do {
if(defined DSN) {DSN}
elsif(DRV =~ /mysql|mariadb/i) {
my $sock = SOCK;
$sock //= "/var/run/mysqld/mysqld.sock" if !defined HOST;
"DBI:${\ DRV}:database=${\ BASE};${\
(defined(HOST)?
'host=' . HOST
. (defined(PORT)? ':' . PORT: ())
. ';': ()
)
}${\ (defined($sock)? 'mysql_socket=' . $sock: ()) }"
}
elsif(DRV =~ /sqlite/i) { "DBI:${\ DRV}:dbname=${\ BASE}" }
else { die "Using DSN! DRV: ${\ DRV} is'nt supported." }
}
}
my $CONN;
sub default_connect_options() {
return default_dsn, USER, PASS, $CONN //= CONN // do {
if(DRV =~ /mysql|mariadb/i) {[
"SET NAMES utf8",
"SET sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'",
]}
else {[]}
};
}
# ÐÐ¾Ð½Ð½ÐµÐºÑ Ðº базе и id коннекÑа
sub base_connect {
my ($dsn, $user, $password, $conn) = @_;
my $base = DBI->connect($dsn, $user, $password, {
RaiseError => 1,
PrintError => 0,
$dsn =~ /^DBI:mysql/i ? (mysql_enable_utf8 => 1): (),
}) or die "Connect to db failed";
$base->do($_) for @$conn;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.676 second using v1.00-cache-2.02-grep-82fe00e-cpan-72ae3ad1e6da )