summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/dbsqlite/main.cpp63
1 files changed, 61 insertions, 2 deletions
diff --git a/modules/dbsqlite/main.cpp b/modules/dbsqlite/main.cpp
index e1128f7..6e936d6 100644
--- a/modules/dbsqlite/main.cpp
+++ b/modules/dbsqlite/main.cpp
@@ -9,7 +9,11 @@
PLUGINLINK *pluginLink;
sqlite3* db;
-char* db_err;
+char* db_err = 0;
+
+SERVICE dbWriteSetting(WPARAM w, LPARAM l);
+SERVICE dbGetSetting(WPARAM w, LPARAM l);
+SERVICE dbDeleteSetting(WPARAM w, LPARAM l);
HINSTANCE hInst;
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
@@ -37,6 +41,9 @@ extern "C" __declspec(dllexport) PLUGININFO* SetPluginInfo()
extern "C" int __declspec(dllexport) Load(PLUGINLINK *link)
{
pluginLink = link;
+ CreateServiceFunction("Db/WriteSetting", (SERVICE)dbWriteSetting);
+ CreateServiceFunction("Db/GetSetting", (SERVICE)dbGetSetting);
+ CreateServiceFunction("Db/DeleteSetting", (SERVICE)dbDeleteSetting);
if(!sqlite3_open_v2(".\\database.sql3", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL))
MessageBoxA(0, "dbsqlite plugin loaded", "INFO", MB_OK);
return 0;
@@ -44,6 +51,9 @@ extern "C" int __declspec(dllexport) Load(PLUGINLINK *link)
extern "C" int __declspec(dllexport) OnModulesLoaded()
{
+ sqlite3_exec(db, "CREATE TABLE 'data' (id INTEGER PRYMARY KEY, module TEXT, setting TEXT, string TEXT, number INT, binary BLOB);", 0, 0, &db_err);
+ sqlite3_exec(db, "CREATE GENERATOR generator_;", 0, 0, &db_err);
+ sqlite3_exec(db, "CREATE TRIGGER index_updater FOR data BEFORE INSERT POSITION 0 AS BEGIN NEW.id = GEN_ID(generator_, 1) END;", 0, 0, &db_err);
for(;;)
Sleep(1000);
return 0;
@@ -56,10 +66,59 @@ extern "C" int __declspec(dllexport) Unload()
return 0;
}
-SERVICE dbWriteSestting(WPARAM w, LPARAM l)
+SERVICE dbWriteSetting(WPARAM w, LPARAM l)
{
+ PLUGININFO *info = (PLUGININFO*)w;
+ DATA *data = (DATA*)l;
+ switch (data->wType)
+ {
+ char buf[512], tmp[32];
+ case D_INT:
+ itoa((int&)data->pData, tmp, 10);
+ strcpy(buf, "INSERT INTO 'data' (module, setting, number) VALUES ('");
+ strcat(buf, info->shortName);
+ strcat(buf, "', '");
+ strcat(buf, data->szSetting);
+ strcat(buf, "', ");
+ strcat(buf, tmp);
+ strcat(buf, ");");
+ sqlite3_exec(db, buf, 0, 0, &db_err);
+ MessageBoxA(0, db_err, "INFO", MB_OK);
+ break;
+ case D_STRING:
+ strcpy(buf, "INSERT INTO 'data' (module, setting, string) VALUES ('");
+ strcat(buf, info->shortName);
+ strcat(buf, "', '");
+ strcat(buf, data->szSetting);
+ strcat(buf, "', '");
+ strcat(buf, (char*)data->pData);
+ strcat(buf, "');");
+ sqlite3_exec(db, buf, 0, 0, &db_err);
+ MessageBoxA(0, db_err, "INFO", MB_OK);
+ break;
+ case D_BLOB:
+ break;
+ default:
+ break;
+ }
}
SERVICE dbGetSetting(WPARAM w, LPARAM l)
{
+ PLUGININFO *info = (PLUGININFO*)w;
+ DATA *data = (DATA*)l;
+}
+
+SERVICE dbDeleteSetting(WPARAM w, LPARAM l)
+{
+ PLUGININFO *info = (PLUGININFO*)w;
+ DATA *data = (DATA*)l;
+ char buf[512];
+ strcpy(buf, "DELETE FROM data WHERE module = '");
+ strcat(buf, info->shortName);
+ strcat(buf, "' AND setting = '");
+ strcat(buf, data->szSetting);
+ strcat(buf, "';");
+ sqlite3_exec(db, buf, 0, 0, &db_err);
+ MessageBoxA(0, db_err, "INFO", MB_OK);
}