diff --git a/extensions/clientprefs/extension.cpp b/extensions/clientprefs/extension.cpp index c933d774..343334d6 100644 --- a/extensions/clientprefs/extension.cpp +++ b/extensions/clientprefs/extension.cpp @@ -224,33 +224,20 @@ void ClientPrefs::DatabaseConnect() { driver = DRIVER_SQLITE; - TQueryOp *op = new TQueryOp(Query_CreateTable, 0); - - op->SetDatabase(Database); - IPreparedQuery *pQuery = Database->PrepareQuery( + if (!Database->DoSimpleQuery( "CREATE TABLE IF NOT EXISTS sm_cookies \ ( \ id INTEGER PRIMARY KEY AUTOINCREMENT, \ name varchar(30) NOT NULL UNIQUE, \ description varchar(255), \ access INTEGER \ - )", - error, sizeof(error), &errCode); - - if (pQuery == NULL) + )")) { - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode); - return; + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookies: %s", Database->GetError()); + goto fatal_fail; } - op->SetCustomPreparedQuery(pQuery); - - dbi->AddToThreadQueue(op, PrioQueue_High); - - op = new TQueryOp(Query_CreateTable, 0); - op->SetDatabase(Database); - - pQuery = Database->PrepareQuery( + if (!Database->DoSimpleQuery( "CREATE TABLE IF NOT EXISTS sm_cookie_cache \ ( \ player varchar(65) NOT NULL, \ @@ -258,27 +245,17 @@ void ClientPrefs::DatabaseConnect() value varchar(100), \ timestamp int, \ PRIMARY KEY (player, cookie_id) \ - )", - error, sizeof(error), &errCode); - - if (pQuery == NULL) + )")) { - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode); - return; + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookie_cache: %s", Database->GetError()); + goto fatal_fail; } - - op->SetCustomPreparedQuery(pQuery); - - dbi->AddToThreadQueue(op, PrioQueue_High); } else if (strcmp(identifier, "mysql") == 0) { driver = DRIVER_MYSQL; - TQueryOp *op = new TQueryOp(Query_CreateTable, 0); - op->SetDatabase(Database); - - IPreparedQuery *pQuery = Database->PrepareQuery( + if (!Database->DoSimpleQuery( "CREATE TABLE IF NOT EXISTS sm_cookies \ ( \ id INTEGER unsigned NOT NULL auto_increment, \ @@ -286,23 +263,13 @@ void ClientPrefs::DatabaseConnect() description varchar(255), \ access INTEGER, \ PRIMARY KEY (id) \ - )", - error, sizeof(error), &errCode); - - if (pQuery == NULL) + )")) { - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode); - return; + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookies: %s", Database->GetError()); + goto fatal_fail; } - op->SetCustomPreparedQuery(pQuery); - - dbi->AddToThreadQueue(op, PrioQueue_High); - - op = new TQueryOp(Query_CreateTable, 0); - op->SetDatabase(Database); - - pQuery = Database->PrepareQuery( + if (!Database->DoSimpleQuery( "CREATE TABLE IF NOT EXISTS sm_cookie_cache \ ( \ player varchar(65) NOT NULL, \ @@ -310,27 +277,16 @@ void ClientPrefs::DatabaseConnect() value varchar(100), \ timestamp int NOT NULL, \ PRIMARY KEY (player, cookie_id) \ - )", - error, sizeof(error), &errCode); - - if (pQuery == NULL) + )")) { - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode); - return; + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookie_cache: %s", Database->GetError()); + goto fatal_fail; } - - op->SetCustomPreparedQuery(pQuery); - - dbi->AddToThreadQueue(op, PrioQueue_High); } else { g_pSM->LogError(myself, "Unsupported driver \"%s\"", identifier); - Database->Close(); - Database = NULL; - databaseLoading = false; - ProcessQueryCache(); - return; + goto fatal_fail; } if (driver == DRIVER_MYSQL) @@ -343,7 +299,7 @@ void ClientPrefs::DatabaseConnect() if (InsertCookieQuery == NULL) { g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode); - return; + goto fatal_fail; } InsertDataQuery = Database->PrepareQuery( @@ -355,7 +311,7 @@ void ClientPrefs::DatabaseConnect() if (InsertDataQuery == NULL) { g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode); - return; + goto fatal_fail; } } else @@ -368,7 +324,7 @@ void ClientPrefs::DatabaseConnect() if (InsertCookieQuery == NULL) { g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode); - return; + goto fatal_fail; } InsertDataQuery = Database->PrepareQuery( @@ -379,7 +335,7 @@ void ClientPrefs::DatabaseConnect() if (InsertDataQuery == NULL) { g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode); - return; + goto fatal_fail; } } @@ -394,7 +350,7 @@ void ClientPrefs::DatabaseConnect() if (SelectDataQuery == NULL) { g_pSM->LogMessage(myself, "Failed to prepare query SelectData: %s (%i)", error, errCode); - return; + goto fatal_fail; } SelectIdQuery = Database->PrepareQuery( @@ -406,15 +362,40 @@ void ClientPrefs::DatabaseConnect() if (SelectIdQuery == NULL) { g_pSM->LogMessage(myself, "Failed to prepare query SelectId: %s (%i)", error, errCode); - return; + goto fatal_fail; } databaseLoading = false; - cell_t result = 0; ProcessQueryCache(); return; + +fatal_fail: + if (SelectIdQuery != NULL) + { + SelectIdQuery->Destroy(); + SelectIdQuery = NULL; + } + if (SelectDataQuery != NULL) + { + SelectDataQuery->Destroy(); + SelectDataQuery = NULL; + } + if (InsertCookieQuery != NULL) + { + InsertCookieQuery->Destroy(); + InsertCookieQuery = NULL; + } + if (InsertDataQuery != NULL) + { + InsertDataQuery->Destroy(); + InsertDataQuery = NULL; + } + Database->Close(); + Database = NULL; + databaseLoading = false; + ProcessQueryCache(); } bool ClientPrefs::AddQueryToQueue( TQueryOp *query ) diff --git a/extensions/clientprefs/query.cpp b/extensions/clientprefs/query.cpp index 6940e64d..ec3b2889 100644 --- a/extensions/clientprefs/query.cpp +++ b/extensions/clientprefs/query.cpp @@ -63,13 +63,6 @@ void TQueryOp::RunThinkPart() break; } - case Query_CreateTable: - { - m_pQuery->Destroy(); - m_pQuery = NULL; - break; - } - default: { break; @@ -241,11 +234,6 @@ void TQueryOp::SetPreparedQuery() } } -void TQueryOp::SetCustomPreparedQuery(IPreparedQuery *query) -{ - m_pQuery = query; -} - ParamData::~ParamData() { if (cookie) diff --git a/extensions/clientprefs/query.h b/extensions/clientprefs/query.h index b0c77d84..3e94d2f8 100644 --- a/extensions/clientprefs/query.h +++ b/extensions/clientprefs/query.h @@ -42,7 +42,6 @@ enum querytype Query_SelectData, Query_InsertData, Query_SelectId, - Query_CreateTable, Query_Connect, }; @@ -79,7 +78,6 @@ public: void SetDatabase(IDatabase *db); void SetPreparedQuery(); - void SetCustomPreparedQuery(IPreparedQuery *wrapper); void Destroy();