]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/sql.h
Resolve /STATS S conflict between SVSHOLD and SHUN
[user/henk/code/inspircd.git] / src / modules / sql.h
index ffe95a9cb7393edb313fab43ca5414a67cbb567e..0c174e987a5bb5eba41b665ca9987bd27f2a86a2 100644 (file)
@@ -16,7 +16,7 @@
 
 /** Defines the error types which SQLerror may be set to
  */
-enum SQLerrorNum { SQL_BAD_DBID, SQL_BAD_CONN, SQL_QSEND_FAIL, SQL_QREPLY_FAIL };
+enum SQLerrorNum { SQL_NO_ERROR, SQL_BAD_DBID, SQL_BAD_CONN, SQL_QSEND_FAIL, SQL_QREPLY_FAIL };
 
 /** A list of format parameters for an SQLquery object.
  */
@@ -39,7 +39,7 @@ typedef std::vector<SQLEntry> SQLEntries;
 /**
  * Result of an SQL query. Only valid inside OnResult
  */
-class SQLResult : public interfacebase
+class SQLResult : public classbase
 {
  public:
        /**
@@ -127,11 +127,8 @@ class SQLQuery : public classbase
 {
  public:
        ModuleRef creator;
-       const std::string dbid;
-       const std::string query;
 
-       SQLQuery(Module* Creator, const std::string& db, const std::string& q)
-               : creator(Creator), dbid(db), query(q) {}
+       SQLQuery(Module* Creator) : creator(Creator) {}
        virtual ~SQLQuery() {}
 
        virtual void OnResult(SQLResult& result) = 0;
@@ -149,25 +146,26 @@ class SQLProvider : public DataProvider
  public:
        SQLProvider(Module* Creator, const std::string& Name) : DataProvider(Creator, Name) {}
        /** Submit an asynchronous SQL request
-        * @param dbid The database ID to apply the request to
-        * @param query The query string
-        * @param callback The callback that the result is sent to
+        * @param callback The result reporting point
+        * @param query The hardcoded query string. If you have parameters to substitute, see below.
         */
-       virtual void submit(SQLQuery* query) = 0;
+       virtual void submit(SQLQuery* callback, const std::string& query) = 0;
 
-       /** Format a parameterized query string using proper SQL escaping.
-        * @param q The query string, with '?' parameters
-        * @param p The parameters to fill in in the '?' slots
+       /** Submit an asynchronous SQL request
+        * @param callback The result reporting point
+        * @param format The simple parameterized query string ('?' parameters)
+        * @param p Parameters to fill in for the '?' entries
         */
-       virtual std::string FormatQuery(const std::string& q, const ParamL& p) = 0;
+       virtual void submit(SQLQuery* callback, const std::string& format, const ParamL& p) = 0;
 
-       /** Format a parameterized query string using proper SQL escaping.
-        * @param q The query string, with '$foo' parameters
-        * @param p The map to look up parameters in
+       /** Submit an asynchronous SQL request.
+        * @param callback The result reporting point
+        * @param format The parameterized query string ('$name' parameters)
+        * @param p Parameters to fill in for the '$name' entries
         */
-       virtual std::string FormatQuery(const std::string& q, const ParamM& p) = 0;
+       virtual void submit(SQLQuery* callback, const std::string& format, const ParamM& p) = 0;
 
-       /** Convenience function */
+       /** Convenience function to prepare a map from a User* */
        void PopulateUserInfo(User* user, ParamM& userinfo)
        {
                userinfo["nick"] = user->nick;