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; 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(){ MySql::~MySql(){
delete db; delete db;
QSqlDatabase::removeDatabase(dataBaseName); QSqlDatabase::removeDatabase(dataBaseName);
} }

View File

@ -76,16 +76,25 @@ public:
* @param newPlayList - a new paly list. * @param newPlayList - a new paly list.
* @return trye if all done. * @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. * @brief addToPlayList - add song to play list.
* @param heder - header of song. first : song removed by id, * @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. * if id of head = -1 then song removed by name and size, and if song no finded this finction return false.
* @param newPlaylist * @param newPlaylist
* @return true if all done. * @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. * @brief removePlayList - remove play list from local database.

View File

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