add dbengine

This commit is contained in:
aozhiwei 2019-09-16 22:01:20 +08:00
parent 53cbd7917a
commit 85e2a966c8
2 changed files with 118 additions and 0 deletions

View File

@ -0,0 +1,94 @@
#include "precompile.h"
#include <a8/mysql.h>
#include <a8/list.h>
#include <a8/timer.h>
#include <a8/udplog.h>
#include "dbengine.h"
#include "app.h"
#include "framework/cpp/utils.h"
#include "framework/cpp/msgqueue.h"
class DBEngineImp
{
public:
list_head query_list_;
a8::mysql::Query* query_;
a8::mysql::Connection* mysql_conn_;
};
void DBEngine::Init()
{
imp_ = new DBEngineImp();
INIT_LIST_HEAD(&imp_->query_list_);
imp_->mysql_conn_ = new a8::mysql::Connection();
imp_->query_ = imp_->mysql_conn_->CreateQuery();
assert(imp_->mysql_conn_->Connect(
"127.0.0.1",
3306,
"root",
"keji178",
"zero_relam"
)
);
f8::InitMysqlConnection(imp_->query_);
auto checkdb_func = [] (const a8::XParams& param)
{
f8::CheckMysqlConnection(
DBEngine::Instance()->imp_->mysql_conn_,
DBEngine::Instance()->imp_->query_,
"127.0.0.1",
3306,
"root",
"keji178",
"zero_relam"
);
};
a8::Timer::Instance()->AddRepeatTimer(1000 * 60 * 5, {}, checkdb_func);
}
void DBEngine::UnInit()
{
delete imp_;
imp_ = nullptr;
}
int DBEngine::ExecQuery(const char* querystr, std::initializer_list<a8::XValue> args)
{
int ret = imp_->query_->ExecQuery(querystr, args);
return ret;
}
bool DBEngine::ExecScript(const char* scriptstr, std::initializer_list<a8::XValue> args)
{
bool ret = imp_->query_->ExecScript(scriptstr, args);
return ret;
}
bool DBEngine::Eof()
{
return imp_->query_->Eof();
}
void DBEngine::Next()
{
imp_->query_->Next();
}
a8::XValue DBEngine::GetValue(short idx)
{
return imp_->query_->GetValue(idx);
}
std::string DBEngine::GetLastError()
{
return imp_->mysql_conn_->GetError();
}
std::string DBEngine::FormatSqlEx(const char* fmt, std::initializer_list<a8::XValue> args)
{
return imp_->query_->FormatSqlEx(fmt, args);
}

View File

@ -0,0 +1,24 @@
#pragma once
class DBEngineImp;
class DBEngine : public a8::Singleton<DBEngine>
{
private:
DBEngine() {};
friend class a8::Singleton<DBEngine>;
public:
void Init();
void UnInit();
int ExecQuery(const char* querystr, std::initializer_list<a8::XValue> args);
bool ExecScript(const char* scriptstr, std::initializer_list<a8::XValue> args);
bool Eof();
void Next();
a8::XValue GetValue(short idx);
std::string GetLastError();
std::string FormatSqlEx(const char* fmt, std::initializer_list<a8::XValue> args);
private:
DBEngineImp* imp_ = nullptr;
};