Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- stock DB::VerifyTable(const table[], bool:defaults, {Float, _}:...)
- {
- print("Stage 1");
- if (!g_Initalized)
- return 0;
- #if !defined CONNECTION_TYPE_MYSQL
- if (!DB::OpenSynchronousDB())
- return 0;
- #endif
- new query[1024];
- format(query, sizeof (query), "SELECT * FROM `%s` LIMIT 1", table);
- #if !defined CONNECTION_TYPE_MYSQL
- new DBResult:result = db_query(g_Database, query);
- new fields = db_num_fields(result);
- #else
- new Cache:result = mysql_query(g_MySQLConnection, query);
- new fields = cache_get_field_count(g_MySQLConnection);
- #endif
- print("Stage 2");
- new query2[1024];
- if (fields > 0)
- {
- #pragma unused query2
- }
- else
- {
- format(query2, sizeof (query2), "CREATE TABLE IF NOT EXISTS `%s` (`ID` INTEGER PRIMARY KEY", table);
- printf("%s", query2);
- }
- new name[35];
- new type;
- new fieldname[35];
- new status;
- print("Stage 3");
- for (new i = 2, j = numargs(); i < j; i++)
- {
- switch (status)
- {
- case 0:
- {
- print("stage 4");
- status = 1;
- DB::GetStringArg(name, i);
- if (fields > 0)
- {
- for (new x; x < fields; x++)
- {
- #if !defined CONNECTION_TYPE_MYSQL
- db_field_name(result, x, fieldname, sizeof (fieldname));
- #else
- cache_get_field_name(x, fieldname, g_MySQLConnection);
- #endif
- if (!strcmp(fieldname, name, true))
- {
- if (defaults)
- i += 2;
- else
- i += 1;
- status = 0;
- break;
- }
- }
- }
- }
- case 1:
- {
- print("stage 4");
- type = getarg(i);
- if (type > STRING)
- type = STRING;
- if (defaults)
- status = 2;
- else
- {
- status = 0;
- switch (type)
- {
- case INTEGER:
- {
- if (fields > 0)
- {
- format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` INTEGER DEFAULT(0)", table, name);
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query);
- #else
- mysql_tquery(g_MySQLConnection, query);
- #endif
- }
- else
- format(query2, sizeof (query2), "%s, `%s` INTEGER DEFAULT(0)", query2, name);
- }
- case FLOAT:
- {
- if (fields > 0)
- {
- format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` FLOAT DEFAULT(0.0)", table, name);
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query);
- #else
- mysql_tquery(g_MySQLConnection, query);
- #endif
- }
- else
- format(query2, sizeof (query2), "%s, `%s` FLOAT DEFAULT(0.0)", query2, name);
- }
- case STRING:
- {
- if (fields > 0)
- {
- format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` TEXT DEFAULT('')", table, name);
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query);
- #else
- mysql_tquery(g_MySQLConnection, query);
- #endif
- }
- else
- format(query2, sizeof (query2), "%s, `%s` TEXT DEFAULT('')", query2, name);
- }
- }
- }
- }
- case 2:
- {
- print("stage 4");
- status = 0;
- switch (type)
- {
- case INTEGER:
- {
- if (fields > 0)
- {
- format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` INTEGER DEFAULT(%i)", table, name, getarg(i));
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query);
- #else
- mysql_tquery(g_MySQLConnection, query);
- #endif
- }
- else
- format(query2, sizeof (query2), "%s, `%s` INTEGER DEFAULT(%i)", query2, name, getarg(i));
- }
- case FLOAT:
- {
- if (fields > 0)
- {
- format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` FLOAT DEFAULT(%f)", table, name, Float:getarg(i));
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query);
- #else
- mysql_tquery(g_MySQLConnection, query);
- #endif
- }
- else
- format(query2, sizeof (query2), "%s, `%s` FLOAT DEFAULT(%f)", query2, name, Float:getarg(i));
- }
- case STRING:
- {
- new val[256];
- DB::GetStringArg(val, i);
- if (fields > 0)
- {
- format(query, sizeof (query), "ALTER TABLE `%s` ADD COLUMN `%s` TEXT DEFAULT('%q')", table, name, val);
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query);
- #else
- mysql_tquery(g_MySQLConnection, query);
- #endif
- }
- else
- format(query2, sizeof (query2), "%s, `%s` TEXT DEFAULT('%q')", query2, name, val);
- }
- }
- }
- }
- }
- print("Stage 5");
- printf("%s", query2);
- if (fields <= 0)
- {
- strcat(query2, ")");
- #if !defined CONNECTION_TYPE_MYSQL
- db_query(g_Database, query2);
- #else
- printf("%s", query2);
- mysql_tquery(g_MySQLConnection, query2);
- #endif
- }
- #if !defined CONNECTION_TYPE_MYSQL
- db_free_result(result);
- #else
- cache_delete(result, g_MySQLConnection);
- #endif
- print("Stage 6");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement