mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
* Add database quest API API functions are named to be similar to LuaSQL and perl DBI New connections are made for Database objects. These can either use credentials from the server eqemu_config or manual connections. * Add option to use zone db connections
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "quest_db.h"
|
|
#include "../common/mysql_stmt.h"
|
|
|
|
class Perl_MySQLPreparedStmt;
|
|
|
|
class Perl_Database : public QuestDB
|
|
{
|
|
public:
|
|
using QuestDB::QuestDB;
|
|
|
|
static void Destroy(Perl_Database* ptr);
|
|
static Perl_Database* Connect();
|
|
static Perl_Database* Connect(Connection type);
|
|
static Perl_Database* Connect(Connection type, bool connect);
|
|
static Perl_Database* Connect(const char* host, const char* user, const char* pass, const char* db, uint32_t port);
|
|
|
|
void Close();
|
|
Perl_MySQLPreparedStmt* Prepare(std::string query);
|
|
};
|
|
|
|
class Perl_MySQLPreparedStmt
|
|
{
|
|
public:
|
|
Perl_MySQLPreparedStmt(mysql::PreparedStmt&& stmt)
|
|
: m_stmt(std::make_unique<mysql::PreparedStmt>(std::move(stmt))) {}
|
|
|
|
static void Destroy(Perl_MySQLPreparedStmt* ptr);
|
|
|
|
void Close();
|
|
void Execute();
|
|
void Execute(perl::array args);
|
|
void SetOptions(perl::hash hash_opts);
|
|
perl::array FetchArray();
|
|
perl::reference FetchArrayRef();
|
|
perl::reference FetchHashRef();
|
|
|
|
// StmtResult functions accessible through this class to simplify api
|
|
int ColumnCount();
|
|
uint64_t LastInsertID();
|
|
uint64_t RowCount();
|
|
uint64_t RowsAffected();
|
|
|
|
private:
|
|
std::unique_ptr<mysql::PreparedStmt> m_stmt;
|
|
mysql::StmtResult m_res = {};
|
|
perl::array m_row_array; // perf: cache for fetches
|
|
perl::hash m_row_hash;
|
|
};
|