]> jfr.im git - irc/quakenet/newserv.git/blobdiff - dbapi/dbapi.h
Update README.
[irc/quakenet/newserv.git] / dbapi / dbapi.h
index c4af43be817252e6e1a1a0a496ccbd60096e1f3c..4b4453a5fe7b1fc2b7a5f6c766985e0d71b0550c 100644 (file)
@@ -1,12 +1,22 @@
 #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_SQLITE
+#endif
 
-#if defined(HAVE_PGSQL) && !defined(USE_SQLITE3)
+#ifndef BUILDING_DBAPI
+
+#if defined(USE_DBAPI_PGSQL) || defined(DBAPI_OVERRIDE_PGSQL)
 
 #include "../pqsql/pqsql.h"
 
@@ -16,12 +26,14 @@ typedef PQQueryHandler DBQueryHandler;
 typedef PQResult DBResult;
 
 #define dbconnected() pqconnected()
-#define dbgetid() pqconnected()
+#define dbgetid() pqgetid()
 #define dbfreeid(x) pqfreeid(x)
 
-#define dbcreateschema(schema) pqcreateschema(schema)
+#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)
@@ -32,9 +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 */
 
-#else
-#if defined(HAVE_SQLITE3)
+#if defined(USE_DBAPI_SQLITE) || defined(DBAPI_OVERRIDE_SQLITE)
 
 #include "../sqlite/sqlite.h"
 
@@ -44,12 +58,14 @@ typedef SQLiteQueryHandler DBQueryHandler;
 typedef SQLiteResult DBResult;
 
 #define dbconnected() sqliteconnected()
-#define dbgetid() sqliteconnected()
-#define dbfreeid(x) sqlitefreeid()
+#define dbgetid() sqlitegetid()
+#define dbfreeid(x) sqlitefreeid(x)
 
-#define dbcreateschema(schema) sqlitecreateschema(schema)
-#define dbescapestring(buf, src, len) sqliteescapestring(buf, src, len)
-#define dbloadtable(tablename, init, data, fini) sqliteloadtable(tablename, init, data, fini);
+#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, 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)
@@ -61,14 +77,15 @@ typedef SQLiteResult DBResult;
 
 #define dbclear(result) sqliteclear(result)
 
-#else
-#error No DB API available.
-#endif
-#endif
+#define dbcall(...) abort() /* HA */
+
+#endif /* DBAPI_SQLITE */
+
+#endif /* BUILDING_DBAPI */
 
 #define dbasyncqueryi(identifier, handler, tag, format, ...) dbasyncqueryf(identifier, handler, tag, 0, format , ##__VA_ARGS__)
 #define dbasyncquery(handler, tag, format, ...) dbasyncqueryf(DB_NULLIDENTIFIER, handler, tag, 0, format , ##__VA_ARGS__)
 #define dbcreatequery(format, ...) dbasyncqueryf(DB_NULLIDENTIFIER, NULL, NULL, DB_CREATE, format , ##__VA_ARGS__)
 #define dbquery(format, ...) dbasyncqueryf(DB_NULLIDENTIFIER, NULL, NULL, 0, format , ##__VA_ARGS__)
 
-#endif
+#endif /* __DBAPI_H */