using System;
using System.Collections.Generic;
using API.Entities.Enums;
namespace API.DTOs;
#nullable enable
public sealed record LibraryDto
{
public int Id { get; init; }
public string? Name { get; init; }
///
/// Last time Library was scanned
///
public DateTime LastScanned { get; init; }
public LibraryType Type { get; init; }
///
/// An optional Cover Image or null
///
public string? CoverImage { get; init; }
///
/// If Folder Watching is enabled for this library
///
public bool FolderWatching { get; set; } = true;
///
/// Include Library series on Dashboard Streams
///
public bool IncludeInDashboard { get; set; } = true;
///
/// Include Library series on Recommended Streams
///
public bool IncludeInRecommended { get; set; } = true;
///
/// Should this library create and manage collections from Metadata
///
public bool ManageCollections { get; set; } = true;
///
/// Should this library create and manage reading lists from Metadata
///
public bool ManageReadingLists { get; set; } = true;
///
/// Include library series in Search
///
public bool IncludeInSearch { get; set; } = true;
///
/// Should this library allow Scrobble events to emit from it
///
/// Scrobbling requires a valid LicenseKey
public bool AllowScrobbling { get; set; } = true;
public ICollection Folders { get; init; } = new List();
///
/// When showing series, only parent series or series with no relationships will be returned
///
public bool CollapseSeriesRelationships { get; set; } = false;
///
/// The types of file type groups the library will scan for
///
public ICollection LibraryFileTypes { get; set; }
///
/// A set of globs that will exclude matching content from being scanned
///
public ICollection ExcludePatterns { get; set; }
///
/// Allow any series within this Library to download metadata.
///
/// This does not exclude the library from being linked to wrt Series Relationships
/// Requires a valid LicenseKey
public bool AllowMetadataMatching { get; set; } = true;
}