diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/dbsqlite/main.cpp | 63 |
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); } |