You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readarr/src/NzbDrone.Core/Books/Model/Author.cs

102 lines
3.5 KiB

using System;
using System.Collections.Generic;
using Equ;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Profiles.Metadata;
using NzbDrone.Core.Profiles.Qualities;
namespace NzbDrone.Core.Books
{
public class Author : Entity<Author>
{
public Author()
{
Tags = new HashSet<int>();
Metadata = new AuthorMetadata();
}
// These correspond to columns in the Authors table
public int AuthorMetadataId { get; set; }
public string CleanName { get; set; }
public bool Monitored { get; set; }
public NewItemMonitorTypes MonitorNewItems { get; set; }
public DateTime? LastInfoSync { get; set; }
public string Path { get; set; }
public string RootFolderPath { get; set; }
public DateTime Added { get; set; }
public int QualityProfileId { get; set; }
public int MetadataProfileId { get; set; }
public HashSet<int> Tags { get; set; }
[MemberwiseEqualityIgnore]
public AddAuthorOptions AddOptions { get; set; }
// Dynamically loaded from DB
[MemberwiseEqualityIgnore]
public LazyLoaded<AuthorMetadata> Metadata { get; set; }
[MemberwiseEqualityIgnore]
public LazyLoaded<QualityProfile> QualityProfile { get; set; }
[MemberwiseEqualityIgnore]
public LazyLoaded<MetadataProfile> MetadataProfile { get; set; }
[MemberwiseEqualityIgnore]
public LazyLoaded<List<Book>> Books { get; set; }
[MemberwiseEqualityIgnore]
public LazyLoaded<List<Series>> Series { get; set; }
//compatibility properties
[MemberwiseEqualityIgnore]
public string Name
{
get { return Metadata.Value.Name; } set { Metadata.Value.Name = value; }
}
[MemberwiseEqualityIgnore]
public string ForeignAuthorId
{
get { return Metadata.Value.ForeignAuthorId; } set { Metadata.Value.ForeignAuthorId = value; }
}
public override string ToString()
{
return string.Format("[{0}][{1}]", Metadata.Value.ForeignAuthorId.NullSafe(), Metadata.Value.Name.NullSafe());
}
public override void UseMetadataFrom(Author other)
{
CleanName = other.CleanName;
}
public override void UseDbFieldsFrom(Author other)
{
Id = other.Id;
AuthorMetadataId = other.AuthorMetadataId;
Monitored = other.Monitored;
MonitorNewItems = other.MonitorNewItems;
LastInfoSync = other.LastInfoSync;
Path = other.Path;
RootFolderPath = other.RootFolderPath;
Added = other.Added;
QualityProfileId = other.QualityProfileId;
MetadataProfileId = other.MetadataProfileId;
Tags = other.Tags;
AddOptions = other.AddOptions;
}
public override void ApplyChanges(Author other)
{
Path = other.Path;
QualityProfileId = other.QualityProfileId;
QualityProfile = other.QualityProfile;
MetadataProfileId = other.MetadataProfileId;
MetadataProfile = other.MetadataProfile;
Books = other.Books;
Tags = other.Tags;
AddOptions = other.AddOptions;
RootFolderPath = other.RootFolderPath;
Monitored = other.Monitored;
MonitorNewItems = other.MonitorNewItems;
}
}
}