diff --git a/frontend/src/Album/Album.ts b/frontend/src/Album/Album.ts
index c9f10a87c..7a645efee 100644
--- a/frontend/src/Album/Album.ts
+++ b/frontend/src/Album/Album.ts
@@ -10,6 +10,7 @@ export interface Statistics {
}
interface Album extends ModelBase {
+ artistId: number;
artist: Artist;
foreignAlbumId: string;
title: string;
diff --git a/frontend/src/Album/AlbumTitleLink.js b/frontend/src/Album/AlbumTitleLink.js
index 8b4dfe212..e55fadfc0 100644
--- a/frontend/src/Album/AlbumTitleLink.js
+++ b/frontend/src/Album/AlbumTitleLink.js
@@ -4,10 +4,11 @@ import Link from 'Components/Link/Link';
function AlbumTitleLink({ foreignAlbumId, title, disambiguation }) {
const link = `/album/${foreignAlbumId}`;
+ const albumTitle = `${title}${disambiguation ? ` (${disambiguation})` : ''}`;
return (
-
- {title}{disambiguation ? ` (${disambiguation})` : ''}
+
+ {albumTitle}
);
}
diff --git a/frontend/src/Artist/Artist.ts b/frontend/src/Artist/Artist.ts
index d89e32f34..813dbea08 100644
--- a/frontend/src/Artist/Artist.ts
+++ b/frontend/src/Artist/Artist.ts
@@ -23,7 +23,6 @@ export interface Ratings {
interface Artist extends ModelBase {
added: string;
- artistMetadataId: string;
foreignArtistId: string;
cleanName: string;
ended: boolean;
diff --git a/frontend/src/Store/Selectors/createArtistAlbumsSelector.ts b/frontend/src/Store/Selectors/createArtistAlbumsSelector.ts
index 2ae54a10c..baffd87ec 100644
--- a/frontend/src/Store/Selectors/createArtistAlbumsSelector.ts
+++ b/frontend/src/Store/Selectors/createArtistAlbumsSelector.ts
@@ -11,7 +11,7 @@ function createArtistAlbumsSelector(artistId: number) {
const { isFetching, isPopulated, error, items } = albums;
const filteredAlbums = items.filter(
- (album) => album.artist.artistMetadataId === artist.artistMetadataId
+ (album) => album.artistId === artist.id
);
return {
diff --git a/src/Lidarr.Api.V1/Artist/ArtistResource.cs b/src/Lidarr.Api.V1/Artist/ArtistResource.cs
index 288208fcf..a71791ba0 100644
--- a/src/Lidarr.Api.V1/Artist/ArtistResource.cs
+++ b/src/Lidarr.Api.V1/Artist/ArtistResource.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Text.Json.Serialization;
using Lidarr.Api.V1.Albums;
using Lidarr.Http.REST;
-using Newtonsoft.Json;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.Music;
@@ -32,7 +32,10 @@ namespace Lidarr.Api.V1.Artist
public string Disambiguation { get; set; }
public List Links { get; set; }
+ [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public AlbumResource NextAlbum { get; set; }
+
+ [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public AlbumResource LastAlbum { get; set; }
public List Images { get; set; }
@@ -74,7 +77,6 @@ namespace Lidarr.Api.V1.Artist
return new ArtistResource
{
Id = model.Id,
- ArtistMetadataId = model.ArtistMetadataId,
ArtistName = model.Name,
diff --git a/src/Lidarr.Api.V1/openapi.json b/src/Lidarr.Api.V1/openapi.json
index d3d5e381c..b48424105 100644
--- a/src/Lidarr.Api.V1/openapi.json
+++ b/src/Lidarr.Api.V1/openapi.json
@@ -8670,10 +8670,6 @@
"type": "integer",
"format": "int32"
},
- "artistMetadataId": {
- "type": "integer",
- "format": "int32"
- },
"status": {
"$ref": "#/components/schemas/ArtistStatusType"
},
diff --git a/src/NzbDrone.Core.Test/MusicTests/AlbumRepositoryTests/AlbumRepositoryFixture.cs b/src/NzbDrone.Core.Test/MusicTests/AlbumRepositoryTests/AlbumRepositoryFixture.cs
index 5d57b2755..4d762c5a0 100644
--- a/src/NzbDrone.Core.Test/MusicTests/AlbumRepositoryTests/AlbumRepositoryFixture.cs
+++ b/src/NzbDrone.Core.Test/MusicTests/AlbumRepositoryTests/AlbumRepositoryFixture.cs
@@ -193,7 +193,7 @@ namespace NzbDrone.Core.Test.MusicTests.AlbumRepositoryTests
GivenMultipleAlbums();
var result = _albumRepo.GetNextAlbums(new[] { _artist.ArtistMetadataId });
- result.Should().BeEquivalentTo(_albums.Take(1), AlbumComparerOptions);
+ result.Should().BeEquivalentTo(_albums.Skip(1).Take(1), AlbumComparerOptions);
}
[Test]
@@ -202,7 +202,7 @@ namespace NzbDrone.Core.Test.MusicTests.AlbumRepositoryTests
GivenMultipleAlbums();
var result = _albumRepo.GetLastAlbums(new[] { _artist.ArtistMetadataId });
- result.Should().BeEquivalentTo(_albums.Skip(2).Take(1), AlbumComparerOptions);
+ result.Should().BeEquivalentTo(_albums.Skip(3).Take(1), AlbumComparerOptions);
}
private EquivalencyAssertionOptions AlbumComparerOptions(EquivalencyAssertionOptions opts) => opts.ComparingByMembers()
diff --git a/src/NzbDrone.Core/Music/Repositories/AlbumRepository.cs b/src/NzbDrone.Core/Music/Repositories/AlbumRepository.cs
index 9d8602f2c..3c69cf42b 100644
--- a/src/NzbDrone.Core/Music/Repositories/AlbumRepository.cs
+++ b/src/NzbDrone.Core/Music/Repositories/AlbumRepository.cs
@@ -46,13 +46,13 @@ namespace NzbDrone.Core.Music
var now = DateTime.UtcNow;
var inner = Builder()
- .Select("MIN(\"Albums\".\"Id\") as id, MAX(\"Albums\".\"ReleaseDate\") as date")
- .Where(x => artistMetadataIds.Contains(x.ArtistMetadataId) && x.ReleaseDate < now)
+ .Select("\"Albums\".\"ArtistMetadataId\" AS artist_metadata_id, MAX(\"Albums\".\"ReleaseDate\") AS date")
+ .Where(x => artistMetadataIds.Contains(x.ArtistMetadataId) && x.Monitored == true && x.ReleaseDate < now)
.GroupBy(x => x.ArtistMetadataId)
.AddSelectTemplate(typeof(Album));
var outer = Builder()
- .Join($"({inner.RawSql}) ids on ids.id = \"Albums\".\"Id\" and ids.date = \"Albums\".\"ReleaseDate\"")
+ .Join($"({inner.RawSql}) ids ON ids.artist_metadata_id = \"Albums\".\"ArtistMetadataId\" AND ids.date = \"Albums\".\"ReleaseDate\"")
.AddParameters(inner.Parameters);
return Query(outer);
@@ -63,13 +63,13 @@ namespace NzbDrone.Core.Music
var now = DateTime.UtcNow;
var inner = Builder()
- .Select("MIN(\"Albums\".\"Id\") as id, MIN(\"Albums\".\"ReleaseDate\") as date")
- .Where(x => artistMetadataIds.Contains(x.ArtistMetadataId) && x.ReleaseDate > now)
+ .Select("\"Albums\".\"ArtistMetadataId\" AS artist_metadata_id, MIN(\"Albums\".\"ReleaseDate\") AS date")
+ .Where(x => artistMetadataIds.Contains(x.ArtistMetadataId) && x.Monitored == true && x.ReleaseDate > now)
.GroupBy(x => x.ArtistMetadataId)
.AddSelectTemplate(typeof(Album));
var outer = Builder()
- .Join($"({inner.RawSql}) ids on ids.id = \"Albums\".\"Id\" and ids.date = \"Albums\".\"ReleaseDate\"")
+ .Join($"({inner.RawSql}) ids ON ids.artist_metadata_id = \"Albums\".\"ArtistMetadataId\" AND ids.date = \"Albums\".\"ReleaseDate\"")
.AddParameters(inner.Parameters);
return Query(outer);