Skip to content
PawnPlus extensions and helpers for the MySQL plugin
Pawn
Branch: master
Clone or download
IllidanS4 and AGraber delay setting the error so it can be awaited (#1)
Setting the error directly will delete the task; 0 ms wait is sufficient.
Latest commit c66a346 Jul 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitattributes
.gitignore
LICENSE Add license Apr 17, 2019
README.md Add missing closing quote to example in README.md Apr 17, 2019
pawn.json Initial commit Apr 17, 2019
pawn_plus_mysql_version.inc sampctl package release: 1.0.2 Apr 18, 2019
pp-mysql.inc delay setting the error so it can be awaited (#1) Jul 8, 2019

README.md

pawn-plus-mysql

sampctl

PawnPlus extensions and helpers for the MySQL plugin

Installation

Simply install to your project:

sampctl package install AGraber/pawn-plus-mysql

Include in your code and begin using the library:

#include <pp-mysql>

It is recommended that you set a PawnPlus version explicitely on your pawn.json (preferibly the latest) to avoid always downloading the latest one.

If you don't use sampctl, just download the pp-mysql.inc include and drop it to your includes/ folder, and then download the PawnPlus plugin and include from here.

While you're on it and if you don't use PawnPlus yet, you should check it out!

Usage

All existing mysql_[t/p]query now have a variant that accepts PawnPlus strings, ending with _s (for example, mysql_tquery_s).

In addition, a new member arrives into the family of these natives: mysql_aquery[_s], which returns a task that will be set as completed when the query completes successfully, or fault when there's an error during its execution.

Note that mysql_aquery[_s] will piggyback on mysql_tquery by default. You can override this and use mysql_tquery by setting the parallel parameter at the end to true, or explicitly change this default value by defining MYSQL_ASYNC_DEFAULT_PARALLEL to you desired value.

Examples

Using PawnPlus strings on natives

public OnPlayerTookAllCandies(playerid)
{
	mysql_tquery_s(DatabaseHandle, @("UPDATE player SET took_candies = UNIX_TIMESTAMP() WHERE id = ") % GetPlayerDBID(playerid));
}

Task-based asynchronous queries:

LoadPlayerData(playerid)
{
	await mysql_aquery_s(DatabaseHandle, @("SELECT * FROM player WHERE id = ") % GetPlayerDBID(playerid), .parallel = false);
	// Cache functions will be available after this
	cache_get_value_name_float(0, "health", PlayerHealth[playerid]);
	// ...
}
You can’t perform that action at this time.