Exposed release date at release level (instead of just year)
This commit is contained in:
@@ -149,11 +149,11 @@ ClusterType::findUsed(Session& session, Range range)
|
||||
}
|
||||
|
||||
ClusterType::pointer
|
||||
ClusterType::find(Session& session, const std::string& name)
|
||||
ClusterType::find(Session& session, std::string_view name)
|
||||
{
|
||||
session.checkSharedLocked();
|
||||
|
||||
return session.getDboSession().find<ClusterType>().where("name = ?").bind(name).resultValue();
|
||||
return session.getDboSession().find<ClusterType>().where("name = ?").bind(std::string {name}).resultValue();
|
||||
}
|
||||
|
||||
ClusterType::pointer
|
||||
|
||||
@@ -287,8 +287,20 @@ Release::getDiscCount() const
|
||||
return res;
|
||||
}
|
||||
|
||||
std::optional<int>
|
||||
Release::getReleaseYear(bool original) const
|
||||
Wt::WDate
|
||||
Release::getReleaseDate() const
|
||||
{
|
||||
return getReleaseDate(false);
|
||||
}
|
||||
|
||||
Wt::WDate
|
||||
Release::getOriginalReleaseDate() const
|
||||
{
|
||||
return getReleaseDate(true);
|
||||
}
|
||||
|
||||
Wt::WDate
|
||||
Release::getReleaseDate(bool original) const
|
||||
{
|
||||
assert(session());
|
||||
|
||||
@@ -301,16 +313,11 @@ Release::getReleaseYear(bool original) const
|
||||
.bind(getId())
|
||||
.resultList()};
|
||||
|
||||
// various dates => no date
|
||||
// various dates => invalid date
|
||||
if (dates.empty() || dates.size() > 1)
|
||||
return std::nullopt;
|
||||
return {};
|
||||
|
||||
auto date {dates.front().year()};
|
||||
|
||||
if (date > 0)
|
||||
return date;
|
||||
|
||||
return std::nullopt;
|
||||
return dates.front();
|
||||
}
|
||||
|
||||
std::optional<std::string>
|
||||
|
||||
@@ -89,7 +89,7 @@ class ClusterType final : public Object<ClusterType, ClusterTypeId>
|
||||
// Getters
|
||||
static std::size_t getCount(Session& session);
|
||||
static RangeResults<ClusterTypeId> find(Session& session, Range range);
|
||||
static pointer find(Session& session, const std::string& name);
|
||||
static pointer find(Session& session, std::string_view name);
|
||||
static pointer find(Session& session, ClusterTypeId id);
|
||||
static RangeResults<ClusterTypeId> findOrphans(Session& session, Range range);
|
||||
static RangeResults<ClusterTypeId> findUsed(Session& session, Range range);
|
||||
|
||||
@@ -100,7 +100,8 @@ class Release final : public Object<Release, ReleaseId>
|
||||
std::vector<std::vector<ObjectPtr<Cluster>>> getClusterGroups(const std::vector<ObjectPtr<ClusterType>>& clusterTypes, std::size_t size) const;
|
||||
|
||||
// Utility functions (if all tracks have the same values, which is legit to not be the case)
|
||||
std::optional<int> getReleaseYear(bool originalDate = false) const;
|
||||
Wt::WDate getReleaseDate() const;
|
||||
Wt::WDate getOriginalReleaseDate() const;
|
||||
std::optional<std::string> getCopyright() const;
|
||||
std::optional<std::string> getCopyrightURL() const;
|
||||
|
||||
@@ -145,6 +146,8 @@ class Release final : public Object<Release, ReleaseId>
|
||||
Release(const std::string& name, const std::optional<UUID>& MBID = {});
|
||||
static pointer create(Session& session, const std::string& name, const std::optional<UUID>& MBID = {});
|
||||
|
||||
Wt::WDate getReleaseDate(bool original) const;
|
||||
|
||||
static constexpr std::size_t _maxNameLength {128};
|
||||
|
||||
std::string _name;
|
||||
|
||||
@@ -350,8 +350,8 @@ TEST_F(DatabaseFixture, MultiTracksSingleReleaseDate)
|
||||
track1A.get().modify()->setOriginalDate(release1OriginalDate);
|
||||
track1B.get().modify()->setOriginalDate(release1OriginalDate);
|
||||
|
||||
EXPECT_EQ(release1.get()->getReleaseYear(), release1Date.year());
|
||||
EXPECT_EQ(release1.get()->getReleaseYear(true), release1OriginalDate.year());
|
||||
EXPECT_EQ(release1.get()->getReleaseDate(), release1Date);
|
||||
EXPECT_EQ(release1.get()->getOriginalReleaseDate(), release1OriginalDate);
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user