// Note: AFAIK, if one enumeration is active you can't do another one // int DB_BASE::enumerate(const char* clause, bool use_use_result) { int x; char query[MAX_QUERY_LEN]; MYSQL_ROW row; if (!cursor.active) { cursor.active = true; sprintf(query, "select * from %s %s", table_name, clause); x = db->do_query(query); if (x) return mysql_errno(db->mysql); // if you use mysql_use_result() here, // any other transactions will fail // if (use_use_result) { cursor.rp = mysql_use_result(db->mysql); } else { cursor.rp = mysql_store_result(db->mysql); } if (!cursor.rp) return mysql_errno(db->mysql); } row = mysql_fetch_row(cursor.rp); if (!row) { mysql_free_result(cursor.rp); cursor.active = false; x = mysql_errno(db->mysql); if (x) return x; return ERR_DB_NOT_FOUND; } else { db_parse(row); } return 0; }
int DB_BASE::lookup(const char* clause) { char query[MAX_QUERY_LEN]; int retval; MYSQL_ROW row; MYSQL_RES* rp; sprintf(query, "select * from %s %s", table_name, clause); retval = db->do_query(query); if (retval) return retval; rp = mysql_store_result(db->mysql); if (!rp) return -1; row = mysql_fetch_row(rp); if (row) db_parse(row); mysql_free_result(rp); if (row == 0) return ERR_DB_NOT_FOUND; return 0; }
int DB_BASE::lookup_id(DB_ID_TYPE id) { char query[MAX_QUERY_LEN]; int retval; MYSQL_ROW row; MYSQL_RES* rp; sprintf(query, "select * from %s where id=%lu", table_name, id); retval = db->do_query(query); if (retval) return retval; rp = mysql_store_result(db->mysql); if (!rp) return -1; row = mysql_fetch_row(rp); if (row) db_parse(row); mysql_free_result(rp); if (row == 0) return ERR_DB_NOT_FOUND; // don't bother checking for uniqueness here return 0; }
void server_masters(socket_t * client, http_request_t * req, db_t * db) { char buffer[10240] = ""; if (strcmp(req->method, "GET") == 0) { list_t * masters = list_new(); char * countK = (char *)http_request_getArg(req, "countK"); char * countP = (char *)http_request_getArg(req, "countP"); if(countK != NULL && countP != NULL) { db_filtration(db, masters, atoi(countK), atoi(countP)); } else { db_parse(db, masters); } cJSON * jPageText = cJSON_CreateArray(); for(int i = 0; i < list_size(masters); i++) { master_t * sm = list_get(masters, i); cJSON * jText = cJSON_CreateObject(); cJSON_AddItemToObject(jText, "Name", cJSON_CreateString(master_getName(sm))); cJSON_AddItemToObject(jText, "Surname", cJSON_CreateString(master_getSurname(sm))); cJSON_AddItemToObject(jText, "CountK", cJSON_CreateNumber(master_getCountK(sm))); cJSON_AddItemToObject(jText, "CountP", cJSON_CreateNumber(master_getCountP(sm))); cJSON_AddItemToArray(jPageText, jText); } char * pageText = cJSON_Print(jPageText); list_free(masters); char * textJSON = textToJSON(pageText); strcat(buffer, textJSON); free(textJSON); } else if (strcmp(req->method, "POST") == 0) { char * name = (char *)http_request_getArg(req, "name"); char * surname = (char *)http_request_getArg(req, "surname"); char * countK = (char *)http_request_getArg(req, "countK"); char * countP = (char *)http_request_getArg(req, "countP"); if(verification(name, surname, countK, countP) == 1) { db_insertData(db, name, surname, atoi(countK), atoi(countP)); cJSON * jText = cJSON_CreateObject(); cJSON_AddItemToObject(jText, "Name", cJSON_CreateString(name)); cJSON_AddItemToObject(jText, "Surname", cJSON_CreateString(surname)); cJSON_AddItemToObject(jText, "CountK", cJSON_CreateNumber(atoi(countK))); cJSON_AddItemToObject(jText, "CountP", cJSON_CreateNumber(atoi(countP))); char * pageText = cJSON_Print(jText); char * textJSON = textToJSON(pageText); strcat(buffer, textJSON); free(textJSON); } else { cJSON * jText = cJSON_CreateObject(); cJSON_AddItemToObject(jText, "Error", cJSON_CreateString("Wrong input")); char * pageText = cJSON_Print(jText); char * textJSON = textToJSON(pageText); strcat(buffer, textJSON); free(textJSON); } } socket_write_string(client, buffer); socket_close(client); }