diff --git a/src/database/Track.cpp b/src/database/Track.cpp
index a46a570b..a423abbf 100644
--- a/src/database/Track.cpp
+++ b/src/database/Track.cpp
@@ -17,6 +17,8 @@
* along with LMS. If not, see .
*/
+#include
+
#include
#include "logger/Logger.hpp"
@@ -47,6 +49,7 @@ Track::getAll(Wt::Dbo::Session& session)
std::vector
Track::getAllIds(Wt::Dbo::Session& session)
{
+ Wt::Dbo::Transaction transaction(session);
Wt::Dbo::collection res = session.query("SELECT id from track");
return std::vector(res.begin(), res.end());
}
@@ -105,14 +108,6 @@ Track::getClusters(void) const
return clusters;
}
-std::vector< Wt::Dbo::ptr >
-Track::getFeatures(void) const
-{
- std::vector< Wt::Dbo::ptr > features;
- std::copy(_features.begin(), _features.end(), std::back_inserter(features));
- return features;
-}
-
Wt::Dbo::Query< Track::pointer >
Track::getQuery(Wt::Dbo::Session& session, SearchFilter filter)
{
@@ -248,12 +243,12 @@ Cluster::create(Wt::Dbo::Session& session, std::string type, std::string name)
}
void
-Cluster::removeByType(Wt::Dbo::Session& session, std::string type)
+Cluster::remove(Wt::Dbo::Session& session, std::string type)
{
- session.execute( "DELETE FROM cluster WHERE type = ?").bind(type);
+ Wt::Dbo::Transaction transaction(session);
+ session.execute("DELETE FROM cluster WHERE type = ?").bind(type);
}
-
Wt::Dbo::Query
Cluster::getQuery(Wt::Dbo::Session& session, SearchFilter filter)
{
@@ -274,7 +269,7 @@ Cluster::getUIQuery(Wt::Dbo::Session& session, SearchFilter filter)
SqlQuery sqlQuery = generatePartialQuery(filter);
Wt::Dbo::Query query
- = session.query( "SELECT c.id, c.type, c.name, COUNT(DISTINCT t.id) FROM cluster c INNER JOIN track_cluster t_c ON t_c.cluster_id = c.id INNER JOIN artist a ON t.artist_id = a.id INNER JOIN release r ON r.id = t.release_id INNER JOIN track t ON t.id = t_c.track_id " + sqlQuery.where().get()).groupBy("c.name").orderBy("c.name");
+ = session.query( "SELECT c.id, c.name, COUNT(DISTINCT t.id) FROM cluster c INNER JOIN track_cluster t_c ON t_c.cluster_id = c.id INNER JOIN artist a ON t.artist_id = a.id INNER JOIN release r ON r.id = t.release_id INNER JOIN track t ON t.id = t_c.track_id " + sqlQuery.where().get()).groupBy("c.name").orderBy("c.name");
for (const std::string& bindArg : sqlQuery.where().getBindArgs())
query.bind(bindArg);
@@ -289,11 +284,10 @@ Cluster::updateUIQueryModel(Wt::Dbo::Session& session, Wt::Dbo::QueryModel(res.begin(), res.end());
}
-Feature::Feature(Wt::Dbo::ptr