You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
1.6 KiB
95 lines
1.6 KiB
//
|
|
// Created by mwo on 9/12/16.
|
|
//
|
|
|
|
#ifndef RESTBED_XMR_MYSQLCONNECTOR_H
|
|
#define RESTBED_XMR_MYSQLCONNECTOR_H
|
|
|
|
//#include "tools.h"
|
|
|
|
#include <mysql++/mysql++.h>
|
|
#include <mysql++/ssqls.h>
|
|
|
|
|
|
#include <iostream>
|
|
|
|
namespace xmreg
|
|
{
|
|
|
|
using namespace mysqlpp;
|
|
using namespace std;
|
|
|
|
#define MYSQL_EXCEPTION_MSG(sql_excetption) cerr << "# ERR: SQLException in " << __FILE__ \
|
|
<< "(" << __FUNCTION__ << ") on line " << __LINE__ << endl \
|
|
<< "# ERR: " << sql_excetption.what() \
|
|
<< endl;
|
|
|
|
|
|
/*
|
|
* This is that creates connections
|
|
* our mysql database.
|
|
*
|
|
* Each thread has its own connection.
|
|
* This way when something breaks in one thread,
|
|
* other threads can still operate on the mysql.
|
|
*
|
|
*/
|
|
class MySqlConnector
|
|
{
|
|
|
|
Connection conn;
|
|
|
|
public:
|
|
|
|
static string url;
|
|
static size_t port;
|
|
static string username;
|
|
static string password;
|
|
static string dbname;
|
|
|
|
MySqlConnector();
|
|
|
|
MySqlConnector(Option* _option);
|
|
|
|
// dont want any copies of connection object.
|
|
// pass it around through shared or unique pointer
|
|
MySqlConnector (const MySqlConnector&) = delete;
|
|
MySqlConnector& operator= (const MySqlConnector&) = delete;
|
|
|
|
Query
|
|
query(const char* qstr = 0);
|
|
|
|
Query
|
|
query(const std::string& qstr);
|
|
|
|
virtual bool
|
|
connect();
|
|
|
|
bool
|
|
ping();
|
|
|
|
Connection&
|
|
get_connection();
|
|
|
|
// this throws exception if not connected
|
|
inline void
|
|
check_if_connected()
|
|
{
|
|
if (!conn.connected())
|
|
throw std::runtime_error("No connection to the mysqldb");
|
|
}
|
|
|
|
virtual ~MySqlConnector();
|
|
|
|
protected:
|
|
|
|
void _init();
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif //RESTBED_XMR_MYSQLCONNECTOR_H
|