extensions/clientprefs/extension.cpp
changeset 2338 b9a152a270c9
parent 2220 20b404790b3b
child 2359 a51e376f3700
     1.1 --- a/extensions/clientprefs/extension.cpp	Sat Oct 04 12:59:21 2008 -0700
     1.2 +++ b/extensions/clientprefs/extension.cpp	Sun Oct 05 01:09:58 2008 -0500
     1.3 @@ -224,33 +224,20 @@
     1.4  	{
     1.5  		driver = DRIVER_SQLITE;
     1.6  
     1.7 -		TQueryOp *op = new TQueryOp(Query_CreateTable, 0);
     1.8 -
     1.9 -		op->SetDatabase(Database);
    1.10 -		IPreparedQuery *pQuery = Database->PrepareQuery(
    1.11 +		if (!Database->DoSimpleQuery(
    1.12  				"CREATE TABLE IF NOT EXISTS sm_cookies  \
    1.13  				( \
    1.14  					id INTEGER PRIMARY KEY AUTOINCREMENT, \
    1.15  					name varchar(30) NOT NULL UNIQUE, \
    1.16  					description varchar(255), \
    1.17  					access INTEGER \
    1.18 -				)",
    1.19 -				error, sizeof(error), &errCode);
    1.20 -
    1.21 -		if (pQuery == NULL)
    1.22 +				)"))
    1.23  		{
    1.24 -			g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode);
    1.25 -			return;
    1.26 +			g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookies: %s", Database->GetError());
    1.27 +			goto fatal_fail;
    1.28  		}
    1.29  
    1.30 -		op->SetCustomPreparedQuery(pQuery);
    1.31 -
    1.32 -		dbi->AddToThreadQueue(op, PrioQueue_High);
    1.33 -
    1.34 -		op = new TQueryOp(Query_CreateTable, 0);
    1.35 -		op->SetDatabase(Database);
    1.36 -
    1.37 -		pQuery = Database->PrepareQuery(
    1.38 +		if (!Database->DoSimpleQuery(
    1.39  				"CREATE TABLE IF NOT EXISTS sm_cookie_cache \
    1.40  				( \
    1.41  					player varchar(65) NOT NULL, \
    1.42 @@ -258,27 +245,17 @@
    1.43  					value varchar(100), \
    1.44  					timestamp int, \
    1.45  					PRIMARY KEY (player, cookie_id) \
    1.46 -				)",
    1.47 -				error, sizeof(error), &errCode);
    1.48 -
    1.49 -		if (pQuery == NULL)
    1.50 +				)"))
    1.51  		{
    1.52 -			g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode);
    1.53 -			return;
    1.54 +			g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookie_cache: %s", Database->GetError());
    1.55 +			goto fatal_fail;
    1.56  		}
    1.57 -
    1.58 -		op->SetCustomPreparedQuery(pQuery);
    1.59 -
    1.60 -		dbi->AddToThreadQueue(op, PrioQueue_High);
    1.61  	}
    1.62  	else if (strcmp(identifier, "mysql") == 0)
    1.63  	{
    1.64  		driver = DRIVER_MYSQL;
    1.65  
    1.66 -		TQueryOp *op = new TQueryOp(Query_CreateTable, 0);
    1.67 -		op->SetDatabase(Database);
    1.68 -		
    1.69 -		IPreparedQuery *pQuery = Database->PrepareQuery(
    1.70 +		if (!Database->DoSimpleQuery(
    1.71  				"CREATE TABLE IF NOT EXISTS sm_cookies \
    1.72  				( \
    1.73  					id INTEGER unsigned NOT NULL auto_increment, \
    1.74 @@ -286,23 +263,13 @@
    1.75  					description varchar(255), \
    1.76  					access INTEGER, \
    1.77  					PRIMARY KEY (id) \
    1.78 -				)",
    1.79 -				error, sizeof(error), &errCode);
    1.80 -
    1.81 -		if (pQuery == NULL)
    1.82 +				)"))
    1.83  		{
    1.84 -			g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode);
    1.85 -			return;
    1.86 +			g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookies: %s", Database->GetError());
    1.87 +			goto fatal_fail;
    1.88  		}
    1.89  
    1.90 -		op->SetCustomPreparedQuery(pQuery);
    1.91 -
    1.92 -		dbi->AddToThreadQueue(op, PrioQueue_High);
    1.93 -
    1.94 -		op = new TQueryOp(Query_CreateTable, 0);
    1.95 -		op->SetDatabase(Database);
    1.96 -			
    1.97 -		pQuery = Database->PrepareQuery(
    1.98 +		if (!Database->DoSimpleQuery(
    1.99  				"CREATE TABLE IF NOT EXISTS sm_cookie_cache \
   1.100  				( \
   1.101  					player varchar(65) NOT NULL, \
   1.102 @@ -310,27 +277,16 @@
   1.103  					value varchar(100), \
   1.104  					timestamp int NOT NULL, \
   1.105  					PRIMARY KEY (player, cookie_id) \
   1.106 -				)",
   1.107 -				error, sizeof(error), &errCode);
   1.108 -
   1.109 -		if (pQuery == NULL)
   1.110 +				)"))
   1.111  		{
   1.112 -			g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode);
   1.113 -			return;
   1.114 +			g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookie_cache: %s", Database->GetError());
   1.115 +			goto fatal_fail;
   1.116  		}
   1.117 -
   1.118 -		op->SetCustomPreparedQuery(pQuery);
   1.119 -
   1.120 -		dbi->AddToThreadQueue(op, PrioQueue_High);
   1.121  	}
   1.122  	else
   1.123  	{
   1.124  		g_pSM->LogError(myself, "Unsupported driver \"%s\"", identifier);
   1.125 -		Database->Close();
   1.126 -		Database = NULL;
   1.127 -		databaseLoading = false;
   1.128 -		ProcessQueryCache();
   1.129 -		return;
   1.130 +		goto fatal_fail;
   1.131  	}
   1.132  
   1.133  	if (driver == DRIVER_MYSQL)
   1.134 @@ -343,7 +299,7 @@
   1.135  		if (InsertCookieQuery == NULL)
   1.136  		{
   1.137  			g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode);
   1.138 -			return;
   1.139 +			goto fatal_fail;
   1.140  		}
   1.141  
   1.142  		InsertDataQuery = Database->PrepareQuery(
   1.143 @@ -355,7 +311,7 @@
   1.144  		if (InsertDataQuery == NULL)
   1.145  		{
   1.146  			g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode);
   1.147 -			return;
   1.148 +			goto fatal_fail;
   1.149  		}
   1.150  	}
   1.151  	else
   1.152 @@ -368,7 +324,7 @@
   1.153  		if (InsertCookieQuery == NULL)
   1.154  		{
   1.155  			g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode);
   1.156 -			return;
   1.157 +			goto fatal_fail;
   1.158  		}
   1.159  
   1.160  		InsertDataQuery = Database->PrepareQuery(
   1.161 @@ -379,7 +335,7 @@
   1.162  		if (InsertDataQuery == NULL)
   1.163  		{
   1.164  			g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode);
   1.165 -			return;
   1.166 +			goto fatal_fail;
   1.167  		}
   1.168  	}
   1.169  
   1.170 @@ -394,7 +350,7 @@
   1.171  	if (SelectDataQuery == NULL)
   1.172  	{
   1.173  		g_pSM->LogMessage(myself, "Failed to prepare query SelectData: %s (%i)", error, errCode);
   1.174 -		return;
   1.175 +		goto fatal_fail;
   1.176  	}
   1.177  
   1.178  	SelectIdQuery = Database->PrepareQuery(
   1.179 @@ -406,15 +362,40 @@
   1.180  	if (SelectIdQuery == NULL)
   1.181  	{
   1.182  		g_pSM->LogMessage(myself, "Failed to prepare query SelectId: %s (%i)", error, errCode);
   1.183 -		return;
   1.184 +		goto fatal_fail;
   1.185  	}
   1.186  
   1.187  	databaseLoading = false;
   1.188 -	cell_t result = 0;
   1.189  
   1.190  	ProcessQueryCache();
   1.191  
   1.192  	return;
   1.193 +
   1.194 +fatal_fail:
   1.195 +	if (SelectIdQuery != NULL)
   1.196 +	{
   1.197 +		SelectIdQuery->Destroy();
   1.198 +		SelectIdQuery = NULL;
   1.199 +	}
   1.200 +	if (SelectDataQuery != NULL)
   1.201 +	{
   1.202 +		SelectDataQuery->Destroy();
   1.203 +		SelectDataQuery = NULL;
   1.204 +	}
   1.205 +	if (InsertCookieQuery != NULL)
   1.206 +	{
   1.207 +		InsertCookieQuery->Destroy();
   1.208 +		InsertCookieQuery = NULL;
   1.209 +	}
   1.210 +	if (InsertDataQuery != NULL)
   1.211 +	{
   1.212 +		InsertDataQuery->Destroy();
   1.213 +		InsertDataQuery = NULL;
   1.214 +	}
   1.215 +	Database->Close();
   1.216 +	Database = NULL;
   1.217 +	databaseLoading = false;
   1.218 +	ProcessQueryCache();
   1.219  }
   1.220  
   1.221  bool ClientPrefs::AddQueryToQueue( TQueryOp *query )