Remove orphaned cluster types
This commit is contained in:
@@ -271,6 +271,15 @@ ClusterType::ClusterType(std::string name)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<ClusterType::pointer>
|
||||||
|
ClusterType::getAllOrphans(Wt::Dbo::Session& session)
|
||||||
|
{
|
||||||
|
Wt::Dbo::collection<pointer> res = session.query<Wt::Dbo::ptr<ClusterType>>("select c_t from cluster_type c_t LEFT OUTER JOIN cluster c ON c_t.id = c.cluster_type_id WHERE c.id IS NULL");
|
||||||
|
|
||||||
|
return std::vector<pointer>(res.begin(), res.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ClusterType::pointer
|
ClusterType::pointer
|
||||||
ClusterType::getByName(Wt::Dbo::Session& session, std::string name)
|
ClusterType::getByName(Wt::Dbo::Session& session, std::string name)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ class ClusterType : public Wt::Dbo::Dbo<ClusterType>
|
|||||||
ClusterType() {}
|
ClusterType() {}
|
||||||
ClusterType(std::string name);
|
ClusterType(std::string name);
|
||||||
|
|
||||||
|
static std::vector<pointer> getAllOrphans(Wt::Dbo::Session& session);
|
||||||
static pointer getByName(Wt::Dbo::Session& session, std::string name);
|
static pointer getByName(Wt::Dbo::Session& session, std::string name);
|
||||||
static std::vector<pointer> getAll(Wt::Dbo::Session& session);
|
static std::vector<pointer> getAll(Wt::Dbo::Session& session);
|
||||||
|
|
||||||
|
|||||||
@@ -725,6 +725,7 @@ MediaScanner::checkAudioFiles( Stats& stats )
|
|||||||
{
|
{
|
||||||
Wt::Dbo::Transaction transaction(_db.getSession());
|
Wt::Dbo::Transaction transaction(_db.getSession());
|
||||||
|
|
||||||
|
// TODO better query for this
|
||||||
// Now process orphan Cluster (no track)
|
// Now process orphan Cluster (no track)
|
||||||
auto clusters = Cluster::getAll(_db.getSession());
|
auto clusters = Cluster::getAll(_db.getSession());
|
||||||
for (auto cluster : clusters)
|
for (auto cluster : clusters)
|
||||||
@@ -735,6 +736,14 @@ MediaScanner::checkAudioFiles( Stats& stats )
|
|||||||
cluster.remove();
|
cluster.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now process orphan cluster types
|
||||||
|
auto clusterTypes = ClusterType::getAllOrphans(_db.getSession());
|
||||||
|
for (auto clusterType : clusterTypes)
|
||||||
|
{
|
||||||
|
LMS_LOG(DBUPDATER, DEBUG) << "Removing orphan cluster type '" << clusterType->getName() << "'";
|
||||||
|
clusterType.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LMS_LOG(DBUPDATER, DEBUG) << "Checking artists...";
|
LMS_LOG(DBUPDATER, DEBUG) << "Checking artists...";
|
||||||
|
|||||||
Reference in New Issue
Block a user