#include <stdarg.h>
+#include <stdio.h>
#define DBAPI2_ADAPTER
#include "../dbapi/dbapi.h"
#define DBAPI2_RESULT_HANDLE DBResult
#include "../dbapi2/dbapi2.h"
-
#include "../lib/stringbuf.h"
static DBAPI2_HANDLE *dbapi2_adapter_new(DBAPIConn *);
static void dbapi2_adapter_escapestring(DBAPIConn *, char *, const char *, size_t);
static int dbapi2_adapter_quotestring(DBAPIConn *, char *, size_t, const char *, size_t);
+static char *dbapi2_adapter_tablename(DBAPIConn *, const char *);
+
static DBAPIProvider adapterprovider = {
.new = dbapi2_adapter_new,
.close = dbapi2_adapter_close,
.loadtable = dbapi2_adapter_loadtable,
.escapestring = dbapi2_adapter_escapestring,
- .quotestring = dbapi2_adapter_quotestring
+ .quotestring = dbapi2_adapter_quotestring,
+
+ .tablename = dbapi2_adapter_tablename,
};
struct DBAPI2AdapterQueryCallback {
return 1;
}
#endif
+
+#ifndef DBAPI2_CUSTOM_TABLENAME
+static char *dbapi2_adapter_tablename(DBAPIConn *db, const char *tablename) {
+ static char buf[1024];
+
+ snprintf(buf, sizeof(buf), "%s.%s", db->name, tablename);
+
+ return buf;
+}
+#endif
typedef void (*DBAPIEscapeString)(struct DBAPIConn *, char *, const char *, size_t);
typedef int (*DBAPIQuoteString)(struct DBAPIConn *, char *, size_t, const char *, size_t);
+typedef char *(*DBAPITableName)(struct DBAPIConn *, const char *);
+
struct DBAPIProviderData;
typedef struct DBAPIProvider {
DBAPIQueryV query;
DBAPICreateTable createtable;
DBAPILoadTable loadtable;
+
+ DBAPITableName tablename;
+
/*
DBAPISafeQuery safequery;
DBAPISafeSimpleQuery safesimplequery;
DBAPICreateTable createtable;
DBAPILoadTable loadtable;
DBAPIEscapeString escapestring; /* deprecated */
+ DBAPITableName tablename;
char name[DBNAME_LEN+1];
noperserv_create_tables();
nodb->query(nodb, noperserv_load_users, NULL,
- "SELECT ID, authname, flags, noticelevel FROM noperserv.users");
+ "SELECT ID, authname, flags, noticelevel FROM %s", nodb->tablename(nodb, "users"));
return 1;
}
void noperserv_create_tables(void) {
nodb->createtable(nodb, NULL, NULL,
- "CREATE TABLE noperserv.users ("
+ "CREATE TABLE %s ("
"ID INT NOT NULL,"
"authname VARCHAR(%d) NOT NULL,"
"flags INT NOT NULL,"
"noticelevel INT NOT NULL,"
- "PRIMARY KEY (ID))", ACCOUNTLEN);
+ "PRIMARY KEY (ID))", nodb->tablename(nodb, "users"), ACCOUNTLEN);
}
void noperserv_cleanup_db(void) {
no_autheduser *ap = authedusers, *lp = NULL;
if(!au->newuser)
- nodb->squery(nodb, "DELETE FROM noperserv.users WHERE id = %lu", au->id);
+ nodb->squery(nodb, "DELETE FROM %s WHERE id = %lu", nodb->tablename(nodb, "users"), au->id);
for(;ap;lp=ap,ap=ap->next) {
if(ap == au) {
if(au->newuser) {
char escapedauthname[ACCOUNTLEN * 2 + 1];
nodb->escapestring(nodb, escapedauthname, au->authname->content, au->authname->length);
- nodb->squery(nodb, "INSERT INTO noperserv.users (id, authname, flags, noticelevel) VALUES (%lu,'%s',%u,%u)", au->id, au->authname->content, NOGetAuthLevel(au), NOGetNoticeLevel(au));
+ nodb->squery(nodb, "INSERT INTO %s (id, authname, flags, noticelevel) VALUES (%lu,'%s',%u,%u)", nodb->tablename(nodb, "users"), au->id, au->authname->content, NOGetAuthLevel(au), NOGetNoticeLevel(au));
au->newuser = 0;
} else {
- nodb->squery(nodb, "UPDATE noperserv.users SET flags = %u, noticelevel = %u WHERE id = %lu", NOGetAuthLevel(au), NOGetNoticeLevel(au), au->id);
+ nodb->squery(nodb, "UPDATE %s SET flags = %u, noticelevel = %u WHERE id = %lu", nodb->tablename(nodb, "users"), NOGetAuthLevel(au), NOGetNoticeLevel(au), au->id);
}
}