unsigned long long exec_insert_stmt(MYSQL_STMT **stmt, MYSQL_BIND *parameters) { int state; int connection; MYSQL_STMT *local; unsigned long long result; connection = db_get_conn(); if (connection < 0) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get an available connection for the query."); #endif return 0; } local = *(stmt + connection); if (local == NULL) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get a valid prepared statement pointer."); #endif db_free_conn(connection); return 0; } if (reset_stmt(local) != 1) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get a reset the prepared statement."); #endif db_free_conn(connection); return 0; } if (bind_param_stmt(local, parameters) != 1) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to bind the parameters to the prepared statement."); #endif db_free_conn(connection); return 0; } state = mysql_stmt_execute_d(local); if (state != 0) { #ifdef DEBUG_FRAMEWORK lavalog("An error occurred while executing a prepared statement. %s", mysql_stmt_error_d(local)); #endif db_free_conn(connection); return 0; } result = mysql_stmt_insert_id_d(local); #ifdef DEBUG_FRAMEWORK if (result == 0) { lavalog("We did not get back a valid insert id. %s", mysql_stmt_error_d(local)); } #endif db_free_conn(connection); return result; }
sql_result_t * exec_query_res_stmt(MYSQL_STMT **stmt, MYSQL_BIND *parameters) { int connection; MYSQL_STMT *local; sql_result_t *result; connection = db_get_conn(); if (connection < 0) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get an available connection for the query."); #endif return NULL; } local = *(stmt + connection); if (local == NULL) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get a valid prepared statement pointer."); #endif db_free_conn(connection); return NULL; } if (reset_stmt(local) != 1) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get a reset the prepared statement."); #endif db_free_conn(connection); return NULL; } if (bind_param_stmt(local, parameters) != 1) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to bind the parameters to the prepared statement."); #endif db_free_conn(connection); return NULL; } if (mysql_stmt_execute_d(local) != 0) { #ifdef DEBUG_FRAMEWORK lavalog("An error occurred while executing a prepared statement. %s", mysql_stmt_error_d(local)); #endif db_free_conn(connection); return NULL; } result = store_db_result(local); if (result == NULL) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to store the database result."); #endif db_free_conn(connection); return NULL; } db_free_conn(connection); return result; }
static int delete_plugin(const char *user, int argc, const char **argv, int *intv, void (*msg)(void *opaque, const char *fmt, ...), void *opaque) { db_stmt_t *s; db_conn_t *c = db_get_conn(); if(c == NULL) { msg(opaque, "Database connection problems"); return 0; } s = db_stmt_get(c, "DELETE FROM version WHERE plugin_id=? AND version=?"); if(db_stmt_exec(s, "ss", argv[0], argv[1])) { msg(opaque, "Database query problems"); return 0; } if(db_stmt_affected_rows(s)) trace(LOG_NOTICE, "User '%s' deleted %s %s", user, argv[0], argv[1]); msg(opaque, "OK, %d rows deleted", db_stmt_affected_rows(s)); return 0; }
static int show_plugin(const char *user, int argc, const char **argv, int *intv, void (*msg)(void *opaque, const char *fmt, ...), void *opaque) { db_stmt_t *s; char tstr[64]; struct tm tm; db_conn_t *c = db_get_conn(); if(c == NULL) { msg(opaque, "Database connection problems"); return 0; } s = db_stmt_get(c, SQL_GET_PLUGIN_BY_ID); if(db_stmt_exec(s, "s", argv[0])) { msg(opaque, "Database query problems"); return 0; } time_t created; int userid; char betasecret[128]; char downloadurl[1024]; int r = db_stream_row(0, s, DB_RESULT_TIME(created), DB_RESULT_INT(userid), DB_RESULT_STRING(betasecret), DB_RESULT_STRING(downloadurl)); db_stmt_reset(s); if(r < 0) { msg(opaque, "Database query problems"); return 0; } if(r) { msg(opaque, "No such plugin"); return 0; } msg(opaque, "'%s' owned by user #%d", argv[0], userid); gmtime_r(&created, &tm); strftime(tstr, sizeof(tstr), "%d-%b-%Y %T UTC", &tm); msg(opaque, " Created %s Betasecret: %s", tstr, betasecret); msg(opaque, " Download URL: %s", downloadurl); msg(opaque, ""); msg(opaque, "Versions:"); s = db_stmt_get(c, SQL_GET_PLUGIN_VERSIONS); if(db_stmt_exec(s, "s", argv[0])) { msg(opaque, "Database query problems"); return 0; } while(1) { char version[64]; char type[64]; char author[128]; char showtime_min_version[64]; int downloads; char title[256]; char category[64]; char synopsis[256]; char description[4096]; char homepage[256]; char pkg_digest[64]; char icon_digest[64]; int published; char comment[4096]; char status[8]; r = db_stream_row(0, s, DB_RESULT_TIME(created), DB_RESULT_STRING(version), DB_RESULT_STRING(type), DB_RESULT_STRING(author), DB_RESULT_INT(downloads), DB_RESULT_STRING(showtime_min_version), DB_RESULT_STRING(title), DB_RESULT_STRING(category), DB_RESULT_STRING(synopsis), DB_RESULT_STRING(description), DB_RESULT_STRING(homepage), DB_RESULT_STRING(pkg_digest), DB_RESULT_STRING(icon_digest), DB_RESULT_INT(published), DB_RESULT_STRING(comment), DB_RESULT_STRING(status) ); if(r) break; gmtime_r(&created, &tm); strftime(tstr, sizeof(tstr), "%d-%b-%Y %T UTC", &tm); msg(opaque, "%-9s %-25s %s %-9s %-9s", version, title, tstr, published ? "Published" : "", *status == 'a' ? "Approved" : *status == 'r' ? "Rejected" : *status == 'p' ? "Pending" : "Unknown"); msg(opaque, " '%s' - %s", *category ? category : "<no category>", synopsis); msg(opaque, " '%s' requierd Showtime ver. %s", type, showtime_min_version); msg(opaque, " %d downloads", downloads); msg(opaque, ""); } return 0; }
unsigned long long exec_query_rows_stmt(MYSQL_STMT **stmt, MYSQL_BIND *parameters) { int connection; MYSQL_STMT *local; unsigned long long rows; connection = db_get_conn(); if (connection < 0) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get an available connection for the query."); #endif return 0; } local = *(stmt + connection); if (local == NULL) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get a valid prepared statement pointer."); #endif db_free_conn(connection); return 0; } if (reset_stmt(local) != 1) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to get a reset the prepared statement."); #endif db_free_conn(connection); return 0; } if (bind_param_stmt(local, parameters) != 1) { #ifdef DEBUG_FRAMEWORK lavalog("Unable to bind the parameters to the prepared statement."); #endif db_free_conn(connection); return 0; } if (mysql_stmt_execute_d(local) != 0) { #ifdef DEBUG_FRAMEWORK lavalog("An error occurred while executing a prepared statement. %s", mysql_stmt_error_d(local)); #endif db_free_conn(connection); return 0; } if (mysql_stmt_store_result_d(local) != 0) { #ifdef DEBUG_FRAMEWORK lavalog("An error occurred while attempting to buffer a prepared statement result set. %s", mysql_stmt_error_d(local)); #endif db_free_conn(connection); return 0; } // Store the number of rows. rows = mysql_stmt_num_rows_d(local); #ifdef DEBUG_FRAMEWORK if (mysql_stmt_free_result_d(local) != 0) { lavalog("An error occurred while attempting to free a prepared statment result buffer. %s", mysql_stmt_error_d(local)); } #else mysql_stmt_free_result_d(local); #endif db_free_conn(connection); return rows; }