Added release country support

This commit is contained in:
emeric
2025-02-08 15:29:57 +01:00
parent 4cb6a70d2b
commit bebe384376
14 changed files with 300 additions and 10 deletions
@@ -141,6 +141,15 @@ namespace lms::scanner
return releaseType;
}
db::Country::pointer getOrCreateCountry(db::Session& session, std::string_view name)
{
db::Country::pointer country{ db::Country::find(session, name) };
if (!country)
country = session.create<db::Country>(name);
return country;
}
db::Label::pointer getOrCreateLabel(db::Session& session, std::string_view name)
{
db::Label::pointer label{ db::Label::find(session, name) };
@@ -174,7 +183,12 @@ namespace lms::scanner
for (std::string_view releaseType : releaseInfo.releaseTypes)
release.modify()->addReleaseType(getOrCreateReleaseType(session, releaseType));
}
if (release->getCountryNames() != releaseInfo.countries)
{
release.modify()->clearCountries();
for (std::string_view country : releaseInfo.countries)
release.modify()->addCountry(getOrCreateCountry(session, country));
}
if (release->getLabelNames() != releaseInfo.labels)
{
release.modify()->clearLabels();
@@ -38,6 +38,7 @@ namespace lms::scanner
removeOrphanedReleases(context);
removeOrphanedReleaseTypes(context);
removeOrphanedLabels(context);
removeOrphanedCountries(context);
removeOrphanedDirectories(context);
}
@@ -77,6 +78,12 @@ namespace lms::scanner
removeOrphanedEntries<db::Label>(context);
}
void ScanStepRemoveOrphanedDbEntries::removeOrphanedCountries(ScanContext& context)
{
LMS_LOG(DBUPDATER, DEBUG, "Checking orphaned countries...");
removeOrphanedEntries<db::Country>(context);
}
void ScanStepRemoveOrphanedDbEntries::removeOrphanedDirectories(ScanContext& context)
{
LMS_LOG(DBUPDATER, DEBUG, "Checking orphaned directories...");
@@ -39,6 +39,7 @@ namespace lms::scanner
void removeOrphanedReleases(ScanContext& context);
void removeOrphanedReleaseTypes(ScanContext& context);
void removeOrphanedLabels(ScanContext& context);
void removeOrphanedCountries(ScanContext& context);
void removeOrphanedDirectories(ScanContext& context);
template<typename T>