added methods for managing playlists.

This commit is contained in:
Andrei Yankovich 2017-12-25 16:57:29 +03:00
parent f06572024d
commit 52499cfb33
3 changed files with 96 additions and 7 deletions

View File

@ -224,9 +224,89 @@ bool MySql::updateAvailableSongs(QList<SongHeader>& list, const QString& playLis
return true;
}
bool MySql::removeSong(const SongHeader &header){
if(header.id > -1){
QString qyer = QString("DELETE from songs where id=%0").arg(header.id);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
}else if(!header.name.isEmpty() && header.size > 0){
QString qyer = QString("DELETE from songs where name='%0' and size=%1").arg(header.name).arg(header.size);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
}else {
return false;
}
return true;
}
bool MySql::addPlayList(const QString &newPlayList, const QString& desc){
QString qyer = QString("INSERT INTO playlists(name, description) VALUE('%0','%1')").arg(newPlayList, desc);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
return true;
}
bool MySql::addToPlayList(const SongHeader &header, const QString &newPlaylist){
if(header.id > -1){
QString qyer = QString("INSERT INTO playlistsdata(song, playlist) VALUE(%0,'%1')").arg(header.id).arg(newPlaylist);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
}else if(!header.name.isEmpty() && header.size > 0){
QString qyer = QString("INSERT INTO playlistsdata(song, playlist) "
"VALUE(SELECT(id from songs where name='%0' and size='%1'),'%2')")
.arg(header.name).arg(header.size).arg(newPlaylist);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
}else {
return false;
}
return true;
}
bool MySql::removeFromPlayList(const SongHeader &header, const QString &playList){
if(header.id > -1){
QString qyer = QString("DELETE from playlistsdata where song=%0 and playlist='%1')").arg(header.id).arg(playList);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
}else if(!header.name.isEmpty() && header.size > 0){
QString qyer = QString("DELETE from playlistsdata where "
"song=SELECT(id from songs where name='%0' and size='%1') and playlist='%2')")
.arg(header.name).arg(header.size).arg(playList);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
}else {
return false;
}
return true;
}
bool MySql::removePlayList(const QString &playList){
QString qyer = QString("DELETE from playlists where name='%0'").arg(playList);
if(!qyery->exec(qyer)){
sqlErrorLog(qyer);
return false;
}
return true;
}
MySql::~MySql(){
delete db;
QSqlDatabase::removeDatabase(dataBaseName);
}

View File

@ -76,16 +76,25 @@ public:
* @param newPlayList - a new paly list.
* @return trye if all done.
*/
bool addPlayList(const QString& newPlayList);
bool addPlayList(const QString& newPlayList, const QString& desc = "");
/**
* @brief changePlayList - replase play list for song.
* @param heder - header of song. first : song removed by id,
* @brief addToPlayList - add song to play list.
* @param header - header of song. first : song removed by id,
* if id of head = -1 then song removed by name and size, and if song no finded this finction return false.
* @param newPlaylist
* @return true if all done.
*/
bool changePlayList(const SongHeader& heder, const QString& newPlaylist);
bool addToPlayList(const SongHeader& header, const QString& playList);
/**
* @brief addToPlayList - add song to play list.
* @param header - header of song. first : song removed by id,
* if id of head = -1 then song removed by name and size, and if song no finded this finction return false.
* @param newPlaylist
* @return true if all done.
*/
bool removeFromPlayList(const SongHeader& header, const QString& playList);
/**
* @brief removePlayList - remove play list from local database.

View File

@ -1,5 +1,5 @@
CREATE TABLE IF NOT EXISTS songs(
id INTEGER AUTO INCREMENT,
id INTEGER AUTOINCREMENT,
name VARCHAR(100),
size INT NOT NULL,
data BLOB NOT NULL,
@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS songs(
CREATE UNIQUE INDEX IF NOT EXISTS isongs ON songs(name,size);
CREATE TABLE IF NOT EXISTS playlists(
id INTEGER AUTO INCREMENT,
id INTEGER AUTOINCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(1000) DEFAULT NULL,
image BLOB DEFAULT NULL,