Fixed: Ensure Root Folder exists when Adding Artist

Closes #5041
This commit is contained in:
Bogdan 2024-08-26 03:23:24 +03:00
commit f49388f3c4
2 changed files with 6 additions and 1 deletions

View file

@ -63,6 +63,7 @@ namespace Lidarr.Api.V1.Artist
SystemFolderValidator systemFolderValidator,
QualityProfileExistsValidator qualityProfileExistsValidator,
MetadataProfileExistsValidator metadataProfileExistsValidator,
RootFolderExistsValidator rootFolderExistsValidator,
ArtistFolderAsRootFolderValidator artistFolderAsRootFolderValidator)
: base(signalRBroadcaster)
{
@ -95,6 +96,7 @@ namespace Lidarr.Api.V1.Artist
PostValidator.RuleFor(s => s.Path).IsValidPath().When(s => s.RootFolderPath.IsNullOrWhiteSpace());
PostValidator.RuleFor(s => s.RootFolderPath)
.IsValidPath()
.SetValidator(rootFolderExistsValidator)
.SetValidator(artistFolderAsRootFolderValidator)
.When(s => s.Path.IsNullOrWhiteSpace());
PostValidator.RuleFor(s => s.ArtistName).NotEmpty();
@ -154,6 +156,7 @@ namespace Lidarr.Api.V1.Artist
[RestPostById]
[Consumes("application/json")]
[Produces("application/json")]
public ActionResult<ArtistResource> AddArtist(ArtistResource artistResource)
{
var artist = _addArtistService.AddArtist(artistResource.ToModel());
@ -163,6 +166,7 @@ namespace Lidarr.Api.V1.Artist
[RestPutById]
[Consumes("application/json")]
[Produces("application/json")]
public ActionResult<ArtistResource> UpdateArtist(ArtistResource artistResource, bool moveFiles = false)
{
var artist = _artistService.GetArtist(artistResource.Id);

View file

@ -1,4 +1,5 @@
using FluentValidation.Validators;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.RootFolders;
@ -19,7 +20,7 @@ namespace NzbDrone.Core.Validation.Paths
{
context.MessageFormatter.AppendArgument("path", context.PropertyValue?.ToString());
return context.PropertyValue == null || _rootFolderService.All().Exists(r => r.Path.PathEquals(context.PropertyValue.ToString()));
return context.PropertyValue == null || _rootFolderService.All().Exists(r => r.Path.IsPathValid(PathValidationType.CurrentOs) && r.Path.PathEquals(context.PropertyValue.ToString()));
}
}
}