From f7a0c180d8d6dc4618b53892c04ca7af64e0841e Mon Sep 17 00:00:00 2001 From: brain Date: Thu, 21 Apr 2005 12:01:35 +0000 Subject: Added header for m_sql with inherited Request class Added simple API for m_sql git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1149 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/extra/m_sql.cpp | 66 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'src/modules/extra/m_sql.cpp') diff --git a/src/modules/extra/m_sql.cpp b/src/modules/extra/m_sql.cpp index f7df3c27e..489f2ddd4 100644 --- a/src/modules/extra/m_sql.cpp +++ b/src/modules/extra/m_sql.cpp @@ -21,6 +21,7 @@ #include "users.h" #include "channels.h" #include "modules.h" +#include "m_sql.h" /* $ModDesc: m_filter with regexps */ /* $CompileFlags: -I/usr/local/include -I/usr/include -L/usr/local/lib/mysql -L/usr/lib/mysql -lmysqlclient */ @@ -215,6 +216,71 @@ class ModuleSQL : public Module ConnectDatabases(); } + void ResultType(SQLRequest *r, SQLResult *res) + { + for (ConnectionList::iterator i = Connections.begin(); i != Connections.end(); i++) + { + if ((i->GetID() == r->GetConnID()) && (i->Enabled())) + { + bool xr = i->QueryResult(r->GetQuery()); + if (!xr) + { + res->SetType(SQL_ERROR); + res->SetError(r->GetError()); + return; + } + } + } + } + + void CountType(SQLRequest *r, SQLResult* res) + { + for (ConnectionList::iterator i = Connections.begin(); i != Connections.end(); i++) + { + if ((i->GetID() == r->GetConnID()) && (i->Enabled())) + { + res->SetType(SQL_COUNT); + res->SetCount(i->QueryCount(r->GetQuery())); + return; + } + } + } + + void RowType(SQLRequest *r, SQLResult* res) + { + for (ConnectionList::iterator i = Connections.begin(); i != Connections.end(); i++) + { + if ((i->GetID() == r->GetConnID()) && (i->Enabled())) + { + std::map row = i->GetRow(); + res->SetRow(row); + res->SetType(SQL_ROW); + if (!row.size()) + res->SetType(SQL_END); + return; + } + } + } + + char* OnRequest(Request* request) + { + SQLResult Result = new SQLResult(); + SQLRequest *r = (SQLRequest*)request; + switch (r->GetRequest()) + { + case SQL_RESULT: + ResultType(r,Result); + break; + case SQL_COUNT: + CountType(r,Result); + break; + case SQL_ROW: + RowType(r,Result); + break; + } + return Result; + } + ModuleSQL() { Srv = new Server(); -- cgit v1.2.3