Distinguish initial scan to import last time write as added time, ref #601

This commit is contained in:
emeric
2025-01-24 17:59:25 +01:00
parent cfa59cb32c
commit 534df42f9d
8 changed files with 58 additions and 15 deletions
+7
View File
@@ -78,6 +78,13 @@ namespace lms::db
});
}
bool MediaLibrary::isEmpty() const
{
assert(session());
auto query{ session()->query<bool>("SELECT EXISTS (SELECT 1 FROM track WHERE media_library_id = ? LIMIT 1) AS is_media_library_empty").bind(getId()) };
return !utils::fetchQuerySingleResult(query);
}
void MediaLibrary::setPath(const std::filesystem::path& p)
{
assert(p.is_absolute());
@@ -50,6 +50,7 @@ namespace lms::db
// getters
std::string_view getName() const { return _name; }
const std::filesystem::path& getPath() const { return _path; }
bool isEmpty() const;
// setters
void setName(std::string_view name) { _name = name; }
+14 -2
View File
@@ -151,19 +151,31 @@ namespace lms::db::tests
ScopedMediaLibrary library{ session, "MyLibrary", "/root" };
ScopedMediaLibrary otherLibrary{ session, "OtherLibrary", "/otherRoot" };
{
auto transaction{ session.createReadTransaction() };
EXPECT_TRUE(library->isEmpty());
EXPECT_TRUE(otherLibrary->isEmpty());
}
{
auto transaction{ session.createWriteTransaction() };
track.get().modify()->setMediaLibrary(library.get());
}
{
auto transaction{ session.createWriteTransaction() };
auto transaction{ session.createReadTransaction() };
EXPECT_FALSE(library->isEmpty());
EXPECT_TRUE(otherLibrary->isEmpty());
}
{
auto transaction{ session.createReadTransaction() };
const auto tracks{ Track::findIds(session, Track::FindParameters{}.setMediaLibrary(library->getId())) };
ASSERT_EQ(tracks.results.size(), 1);
EXPECT_EQ(tracks.results.front(), track.getId());
}
{
auto transaction{ session.createWriteTransaction() };
auto transaction{ session.createReadTransaction() };
const auto tracks{ Track::findIds(session, Track::FindParameters{}.setMediaLibrary(otherLibrary->getId())) };
EXPECT_EQ(tracks.results.size(), 0);
}