Aion-Query

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN


Для этого используется `$Aion::Query::base_connection_id`.

SQLite работает в том же процессе, поэтому `$Aion::Query::base_connection_id` имеет `-1`. То есть для SQLite этот метод ничего не делает.

```perl
my @x = query_stop;
\@x  # --> []
```

## sql_debug ($fn, $query)

Сохраняет запросы к базе данных в `@Aion::Query::DEBUG`. Вызывается из `query_do`.

```perl
sql_debug label => "SELECT 123";

$Aion::Query::DEBUG[$#Aion::Query::DEBUG]  # => label: SELECT 123
```

# AUTHOR

Yaroslav O. Kosmina [dart@cpan.org](dart@cpan.org)

# LICENSE

i18n/Aion/Query.ru-en.po  view on Meta::CPAN


msgid "Создает дополнительное соединение с базой и убивает основное."
msgstr "Creates an additional connection to the base and kills the main one."

msgid "Для этого используется `$Aion::Query::base_connection_id`."
msgstr "To do this, use `$Aion::Query::base_connection_id`."

msgid "SQLite работает в том же процессе, поэтому `$Aion::Query::base_connection_id` имеет `-1`. То есть для SQLite этот метод ничего не делает."
msgstr "SQLite runs in the same process, so `$Aion::Query::base_connection_id` has `-1`. That is, for SQLite this method does nothing."

msgid "## sql_debug ($fn, $query)"
msgstr "## sql_debug ($fn, $query)"

msgid "Сохраняет запросы к базе данных в `@Aion::Query::DEBUG`. Вызывается из `query_do`."
msgstr "Stores database queries in `@Aion::Query::DEBUG`. Called from `query_do`."

msgid "# AUTHOR"
msgstr "#AUTHOR"

msgid "Yaroslav O. Kosmina [dart@cpan.org](dart@cpan.org)"
msgstr "Yaroslav O. Kosmina [dart@cpan.org](dart@cpan.org)"

lib/Aion/Query.md  view on Meta::CPAN


Для этого используется `$Aion::Query::base_connection_id`.

SQLite работает в том же процессе, поэтому `$Aion::Query::base_connection_id` имеет `-1`. То есть для SQLite этот метод ничего не делает.

```perl
my @x = query_stop;
\@x  # --> []
```

## sql_debug ($fn, $query)

Сохраняет запросы к базе данных в `@Aion::Query::DEBUG`. Вызывается из `query_do`.

```perl
sql_debug label => "SELECT 123";

$Aion::Query::DEBUG[$#Aion::Query::DEBUG]  # => label: SELECT 123
```

# AUTHOR

Yaroslav O. Kosmina [dart@cpan.org](dart@cpan.org)

# LICENSE

lib/Aion/Query.pm  view on Meta::CPAN

	# вспомогательное подключение
	my $signal = base_connect(default_connect_options());
	$signal->do("KILL HARD " . ($base_connection_id + 0));
	$signal->disconnect;
	return;
}

# Запросы к базе

our @DEBUG;
sub sql_debug(@) {
	my ($fn, $query) = @_;
	my $msg = "$fn: " . (ref $query? np($query): $query);
	push @DEBUG, $msg;
	print STDERR $msg, "\n" if DEBUG;
}

# sub debug_html {
# 	join "", map { ("<p class='debug'>", to_html($_), "</p>\n") } @DEBUG;
# }

# sub debug_text {
# 	return "" if !@DEBUG;
# 	join "", map { "$_\n\n" } @DEBUG, "";
# }

# sub debug_array {
# 	return if !@DEBUG;
# 	$_[0]->{SQL_DEBUG} = \@DEBUG;
# 	return;
# }


sub LAST_INSERT_ID() {
	$base->last_insert_id
}

lib/Aion/Query.pm  view on Meta::CPAN

			join "\n", map { local $param{'_'} = $_; _set_params("$sep$code", \%param) } @{$param{$param}}
		}:
		_set_params($+{param}, \%param)
	!imgex;
	$query
}

# Выполняет sql-запрос
sub query_do($;$) {
	my ($query, $columns) = @_;
	sql_debug query => $query;
	connect_respavn($base, $base_connection_id);

	my $res = eval {
		if($query =~ /^\s*(select|show|desc(ribe)?)\b/in) {

			my $r = @_>1? do {
				my $sth = $base->prepare($query);
				$sth->execute;
				$_[1] = [@{$sth->{NAME}}];
				my $res = $sth->fetchall_arrayref({});

lib/Aion/Query.pm  view on Meta::CPAN


Creates an additional connection to the base and kills the main one.

To do this, use C<$Aion::Query::base_connection_id>.

SQLite runs in the same process, so C<$Aion::Query::base_connection_id> has C<-1>. That is, for SQLite this method does nothing.

	my @x = query_stop;
	\@x  # --> []

=head2 sql_debug ($fn, $query)

Stores database queries in C<@Aion::Query::DEBUG>. Called from C<query_do>.

	sql_debug label => "SELECT 123";
	
	$Aion::Query::DEBUG[$#Aion::Query::DEBUG]  # => label: SELECT 123

=head1 AUTHOR

Yaroslav O. Kosmina LL<mailto:dart@cpan.org>

=head1 LICENSE

âš– B<GPLv3>

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

# 
# Для этого используется `$Aion::Query::base_connection_id`.
# 
# SQLite работает в том же процессе, поэтому `$Aion::Query::base_connection_id` имеет `-1`. То есть для SQLite этот метод ничего не делает.
# 
done_testing; }; subtest 'query_stop ()' => sub { 
my @x = query_stop;
::is_deeply scalar do {\@x}, scalar do {[]}, '\@x  # --> []';

# 
# ## sql_debug ($fn, $query)
# 
# Сохраняет запросы к базе данных в `@Aion::Query::DEBUG`. Вызывается из `query_do`.
# 
done_testing; }; subtest 'sql_debug ($fn, $query)' => sub { 
sql_debug label => "SELECT 123";

::is scalar do {$Aion::Query::DEBUG[$#Aion::Query::DEBUG]}, "label: SELECT 123", '$Aion::Query::DEBUG[$#Aion::Query::DEBUG]  # => label: SELECT 123';

# 
# # AUTHOR
# 
# Yaroslav O. Kosmina [dart@cpan.org](dart@cpan.org)
# 
# # LICENSE
# 



( run in 1.811 second using v1.01-cache-2.11-cpan-49f99fa48dc )