]> jfr.im git - irc/quakenet/newserv.git/blobdiff - dbapi/dbapi.h
DBAPI2: add support for stored procedures
[irc/quakenet/newserv.git] / dbapi / dbapi.h
index 357da56c02802e4c70076bfda3af92aaaaa84698..4b4453a5fe7b1fc2b7a5f6c766985e0d71b0550c 100644 (file)
@@ -1,14 +1,17 @@
 #ifndef __DBAPI_H
 #define __DBAPI_H
 
+#ifndef DBAPI2_ADAPTER
 #include "../config.h"
+#endif
 
 #define DB_NULLIDENTIFIER 0
 #define DB_CREATE 1
+#define DB_CALL 2
 
 #ifdef DBAPI_OVERRIDE
 #undef USE_DBAPI_PGSQL
-#undef USE_DBAPI_SQLITE3
+#undef USE_DBAPI_SQLITE
 #endif
 
 #ifndef BUILDING_DBAPI
@@ -29,7 +32,8 @@ typedef PQResult DBResult;
 #define dbattach(schema) pqcreateschema(schema)
 #define dbdetach(schema)
 #define dbescapestring(buf, src, len)  PQescapeString(buf, src, len)
-#define dbloadtable(tablename, init, data, fini) pqloadtable(tablename, init, data, fini);
+#define dbloadtable(tablename, init, data, fini) pqloadtable(tablename, init, data, fini, NULL);
+#define dbloadtable_tag(tablename, init, data, fini, tag) pqloadtable(tablename, init, data, fini, tag);
 
 #define dbasyncqueryf(id, handler, tag, flags, format, ...) pqasyncqueryf(id, handler, tag, flags, format , ##__VA_ARGS__)
 #define dbquerysuccessful(x) pqquerysuccessful(x)
@@ -40,10 +44,11 @@ typedef PQResult DBResult;
 #define dbgetvalue(result, column) pqgetvalue(result, column)
 
 #define dbclear(result) pqclear(result)
+#define dbcall(id, handler, tag, function, ...) pqasyncqueryf(id, handler, tag, (handler) == NULL ? DB_CALL : 0, "SELECT %s(%s)", function , ##__VA_ARGS__)
 
 #endif /* DBAPI_PGSQL */
 
-#if defined(USE_DBAPI_SQLITE3) || defined(DBAPI_OVERRIDE_SQLITE3)
+#if defined(USE_DBAPI_SQLITE) || defined(DBAPI_OVERRIDE_SQLITE)
 
 #include "../sqlite/sqlite.h"
 
@@ -56,10 +61,11 @@ typedef SQLiteResult DBResult;
 #define dbgetid() sqlitegetid()
 #define dbfreeid(x) sqlitefreeid(x)
 
-#define dbattach(schema) sqliteattach(schema)
-#define dbdetach(schema) sqlitedetach(schema)
+#define dbattach(schema) sqliteattach((schema))
+#define dbdetach(schema) sqlitedetach((schema))
 #define dbescapestring(buf, src, len) sqliteescapestring(buf, (char *)(src), len)
-#define dbloadtable(tablename, init, data, fini) sqliteloadtable(tablename, init, data, fini);
+#define dbloadtable(tablename, init, data, fini) sqliteloadtable(tablename, init, data, fini, NULL);
+#define dbloadtable_tag(tablename, init, data, fini, tag) sqliteloadtable(tablename, init, data, fini, tag);
 
 #define dbasyncqueryf(id, handler, tag, flags, format, ...) sqliteasyncqueryf(id, handler, tag, flags, format , ##__VA_ARGS__)
 #define dbquerysuccessful(x) sqlitequerysuccessful(x)
@@ -71,7 +77,9 @@ typedef SQLiteResult DBResult;
 
 #define dbclear(result) sqliteclear(result)
 
-#endif /* DBAPI_SQLITE3 */
+#define dbcall(...) abort() /* HA */
+
+#endif /* DBAPI_SQLITE */
 
 #endif /* BUILDING_DBAPI */