Added some TODO's. Need to switch to prepared statements for album, artist, genre, and year repositories
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user