Advertisement
Private200

Untitled

Jun 19th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. stock DB::VerifyTable(const table[], bool:defaults, {Float, _}:...)
  2. {
  3. print("Stage 1");
  4. if (!g_Initalized)
  5. return 0;
  6.  
  7. #if !defined CONNECTION_TYPE_MYSQL
  8. if (!DB::OpenSynchronousDB())
  9. return 0;
  10. #endif
  11.  
  12. new query[1024];
  13. format(query, sizeof (query), "SELECT * FROM `%s` LIMIT 1", table);
  14.  
  15. #if !defined CONNECTION_TYPE_MYSQL
  16. new DBResult:result = db_query(g_Database, query);
  17. new fields = db_num_fields(result);
  18. #else
  19. new Cache:result = mysql_query(g_MySQLConnection, query);
  20. new fields = cache_get_field_count(g_MySQLConnection);
  21. #endif
  22.  
  23. print("Stage 2");
  24.  
  25. new query2[1024];
  26. if (fields > 0)
  27. {
  28. #pragma unused query2
  29. }
  30. else
  31. {
  32. format(query2, sizeof (query2), "CREATE TABLE IF NOT EXISTS `%s` (`ID` INTEGER PRIMARY KEY", table);
  33. printf("%s", query2);
  34. }
  35.  
  36. new name[35];
  37. new type;
  38.  
  39. new fieldname[35];
  40.  
  41. new status;
  42.  
  43. print("Stage 3");
  44. for (new i = 2, j = numargs(); i < j; i++)
  45. {
  46. switch (status)
  47. {
  48. case 0:
  49. {
  50. print("stage 4");
  51. status = 1;
  52.  
  53. DB::GetStringArg(name, i);
  54.  
  55. if (fields > 0)
  56. {
  57. for (new x; x < fields; x++)
  58. {
  59. #if !defined CONNECTION_TYPE_MYSQL
  60. db_field_name(result, x, fieldname, sizeof (fieldname));
  61. #else
  62. cache_get_field_name(x, fieldname, g_MySQLConnection);
  63. #endif
  64.  
  65. if (!strcmp(fieldname, name, true))
  66. {
  67. if (defaults)
  68. i += 2;
  69. else
  70. i += 1;
  71.  
  72. status = 0;
  73. break;
  74. }
  75. }
  76. }
  77. }
  78.  
  79. case 1:
  80. {
  81. print("stage 4");
  82. type = getarg(i);
  83. if (type > STRING)
  84. type = STRING;
  85.  
  86. if (defaults)
  87. status = 2;
  88. else
  89. {
  90. status = 0;
  91.  
  92. switch (type)
  93. {
  94. case INTEGER:
  95. {
  96. if (fields > 0)
  97. {
  98. format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` INTEGER DEFAULT(0)", table, name);
  99.  
  100. #if !defined CONNECTION_TYPE_MYSQL
  101. db_query(g_Database, query);
  102. #else
  103. mysql_tquery(g_MySQLConnection, query);
  104. #endif
  105. }
  106. else
  107. format(query2, sizeof (query2), "%s, `%s` INTEGER DEFAULT(0)", query2, name);
  108. }
  109.  
  110. case FLOAT:
  111. {
  112. if (fields > 0)
  113. {
  114. format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` FLOAT DEFAULT(0.0)", table, name);
  115.  
  116. #if !defined CONNECTION_TYPE_MYSQL
  117. db_query(g_Database, query);
  118. #else
  119. mysql_tquery(g_MySQLConnection, query);
  120. #endif
  121. }
  122. else
  123. format(query2, sizeof (query2), "%s, `%s` FLOAT DEFAULT(0.0)", query2, name);
  124. }
  125.  
  126. case STRING:
  127. {
  128. if (fields > 0)
  129. {
  130. format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` TEXT DEFAULT('')", table, name);
  131.  
  132. #if !defined CONNECTION_TYPE_MYSQL
  133. db_query(g_Database, query);
  134. #else
  135. mysql_tquery(g_MySQLConnection, query);
  136. #endif
  137. }
  138. else
  139. format(query2, sizeof (query2), "%s, `%s` TEXT DEFAULT('')", query2, name);
  140. }
  141. }
  142. }
  143. }
  144.  
  145. case 2:
  146. {
  147. print("stage 4");
  148. status = 0;
  149.  
  150. switch (type)
  151. {
  152. case INTEGER:
  153. {
  154. if (fields > 0)
  155. {
  156. format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` INTEGER DEFAULT(%i)", table, name, getarg(i));
  157.  
  158. #if !defined CONNECTION_TYPE_MYSQL
  159. db_query(g_Database, query);
  160. #else
  161. mysql_tquery(g_MySQLConnection, query);
  162. #endif
  163. }
  164. else
  165. format(query2, sizeof (query2), "%s, `%s` INTEGER DEFAULT(%i)", query2, name, getarg(i));
  166. }
  167.  
  168. case FLOAT:
  169. {
  170. if (fields > 0)
  171. {
  172. format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` FLOAT DEFAULT(%f)", table, name, Float:getarg(i));
  173.  
  174. #if !defined CONNECTION_TYPE_MYSQL
  175. db_query(g_Database, query);
  176. #else
  177. mysql_tquery(g_MySQLConnection, query);
  178. #endif
  179. }
  180. else
  181. format(query2, sizeof (query2), "%s, `%s` FLOAT DEFAULT(%f)", query2, name, Float:getarg(i));
  182. }
  183.  
  184. case STRING:
  185. {
  186. new val[256];
  187. DB::GetStringArg(val, i);
  188.  
  189. if (fields > 0)
  190. {
  191. format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` TEXT DEFAULT('%q')", table, name, val);
  192.  
  193. #if !defined CONNECTION_TYPE_MYSQL
  194. db_query(g_Database, query);
  195. #else
  196. mysql_tquery(g_MySQLConnection, query);
  197. #endif
  198. }
  199. else
  200. format(query2, sizeof (query2), "%s, `%s` TEXT DEFAULT('%q')", query2, name, val);
  201. }
  202. }
  203. }
  204. }
  205. }
  206. print("Stage 5");
  207. printf("%s", query2);
  208. if (fields <= 0)
  209. {
  210. strcat(query2, ")");
  211.  
  212. #if !defined CONNECTION_TYPE_MYSQL
  213. db_query(g_Database, query2);
  214. #else
  215. printf("%s", query2);
  216. mysql_tquery(g_MySQLConnection, query2);
  217. #endif
  218. }
  219.  
  220. #if !defined CONNECTION_TYPE_MYSQL
  221. db_free_result(result);
  222. #else
  223. cache_delete(result, g_MySQLConnection);
  224. #endif
  225. print("Stage 6");
  226. return 1;
  227. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement