Adding support for partial dates (only year or month), fixes #477
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "database/Release.hpp"
|
||||
#include "database/Session.hpp"
|
||||
#include "database/Track.hpp"
|
||||
#include "database/Types.hpp"
|
||||
#include "database/User.hpp"
|
||||
#include "services/feedback/IFeedbackService.hpp"
|
||||
#include "services/scrobbling/IScrobblingService.hpp"
|
||||
@@ -106,7 +107,7 @@ namespace lms::api::subsonic
|
||||
Release::FindParameters params;
|
||||
params.setSortMethod(fromYear > toYear ? ReleaseSortMethod::DateDesc : ReleaseSortMethod::DateAsc);
|
||||
params.setRange(range);
|
||||
params.setDateRange(DateRange::fromYearRange(std::min(fromYear, toYear), std::max(fromYear, toYear)));
|
||||
params.setDateRange(YearRange{ std::min(fromYear, toYear), std::max(fromYear, toYear) });
|
||||
params.setMediaLibrary(mediaLibraryId);
|
||||
|
||||
releases = Release::findIds(context.dbSession, params);
|
||||
|
||||
@@ -204,7 +204,7 @@ namespace lms::api::subsonic
|
||||
albumNode.createEmptyArrayChild("artists");
|
||||
albumNode.setAttribute("displayArtist", "");
|
||||
}
|
||||
albumNode.addChild("originalReleaseDate", createItemDateNode(release->getOriginalDate(), release->getOriginalYear()));
|
||||
albumNode.addChild("originalReleaseDate", createItemDateNode(release->getOriginalDate()));
|
||||
|
||||
albumNode.setAttribute("isCompilation", release->isCompilation());
|
||||
|
||||
|
||||
@@ -23,20 +23,16 @@
|
||||
|
||||
namespace lms::api::subsonic
|
||||
{
|
||||
Response::Node createItemDateNode(const Wt::WDate& date, std::optional<int> year)
|
||||
Response::Node createItemDateNode(const core::PartialDateTime& date)
|
||||
{
|
||||
Response::Node itemDateNode;
|
||||
|
||||
if (date.isValid())
|
||||
{
|
||||
itemDateNode.setAttribute("year", date.year());
|
||||
itemDateNode.setAttribute("month", date.month());
|
||||
itemDateNode.setAttribute("day", date.day());
|
||||
}
|
||||
else if (year)
|
||||
{
|
||||
if (auto year{ date.getYear() })
|
||||
itemDateNode.setAttribute("year", *year);
|
||||
}
|
||||
if (auto month{ date.getMonth() })
|
||||
itemDateNode.setAttribute("month", *month);
|
||||
if (auto day{ date.getDay() })
|
||||
itemDateNode.setAttribute("day", *day);
|
||||
|
||||
return itemDateNode;
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Wt/WDate.h>
|
||||
#include "core/PartialDateTime.hpp"
|
||||
|
||||
#include "SubsonicResponse.hpp"
|
||||
|
||||
namespace lms::api::subsonic
|
||||
{
|
||||
Response::Node createItemDateNode(const Wt::WDate& date, std::optional<int> year);
|
||||
Response::Node createItemDateNode(const core::PartialDateTime& date);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user