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.
102 lines
3.5 KiB
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;
|
|
}
|
|
}
|
|
}
|