Distinguish initial scan to import last time write as added time, ref #601
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user