Added some TODO's. Need to switch to prepared statements for album, artist, genre, and year repositories

This commit is contained in:
kdeng00
2019-09-03 16:15:37 -04:00
parent c55d8261a2
commit 12a53ed2b1
19 changed files with 589 additions and 26 deletions
+55 -1
View File
@@ -63,7 +63,53 @@ bool Database::albumRepository::doesAlbumExists(const Model::Album& album, Type:
// record for songs on the same album. After fixing this, do the
// same for Artist, Genre, and Year records
return false;
auto conn = setup_mysql_connection();
auto stmt = mysql_stmt_init(conn);
MYSQL_BIND params[1];
memset(params, 0, sizeof(params));
std::stringstream qry;
qry << "SELECT * FROM Album WHERE ";
auto titleLength = album.title.size();
switch (filter) {
case Type::albumFilter::id:
qry << "AlbumId = ?";
params[0].buffer_type = MYSQL_TYPE_LONG;
params[0].buffer = (char*)&album.id;
params[0].length = 0;
params[0].is_null = 0;
break;
case Type::albumFilter::title:
qry << "Title = ?";
params[0].buffer_type = MYSQL_TYPE_STRING;
params[0].buffer = (char*)album.title.c_str();
params[0].length = &titleLength;
params[0].is_null = 0;
break;
default:
break;
}
qry << " LIMIT 1";
const auto query = qry.str();
auto status = mysql_stmt_prepare(stmt, query.c_str(), query.size());
status = mysql_stmt_bind_param(stmt, params);
status = mysql_stmt_execute(stmt);
std::cout << "the query has been performed" << std::endl;
::mysql_stmt_store_result(stmt);
auto rowCount = ::mysql_stmt_num_rows(stmt);
::mysql_stmt_close(stmt);
::mysql_close(conn);
return (rowCount > 0) ? true : false;
}
void Database::albumRepository::saveAlbum(const Model::Album& album)
@@ -133,3 +179,11 @@ Model::Album Database::albumRepository::parseRecord(MYSQL_RES* results)
return album;
}
Model::Album Database::albumRepository::parseRecord(MYSQL_STMT *stmt)
{
// TODO: implement this
Model::Album album;
return album;
}