
* Added a tooltip to inform user that format and collection filter selections do not only show for the selected library. * Refactored a lot of code around when we update chapter cover images. Applied an optimization for when we re-calculate volume/series covers, such that it only occurs when the first chapter's image updates. * Updated code to ensure only lastmodified gets refreshed in metadata since it always follows a scan * Optimized how metadata is populated on the series. Instead of re-reading the comicInfos, instead I read the data from the underlying chapter entities. This reduces N additional reads AND enables the ability in the future to show/edit chapter level metadata. * Spelling mistake * Fixed a concurency issue by not selecting Genres from DB. Added a test for long paths. * Fixed a bug in filter where collection tag wasn't populating on load * Cleaned up the logic for changelog to better compare against the installed verison. For nightly users, show the last stable as installed. * Removed some demo code * SplitQuery to allow loading tags much faster for series metadata load.
84 lines
3.4 KiB
C#
84 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using API.DTOs.Metadata;
|
|
using API.Entities;
|
|
|
|
namespace API.DTOs
|
|
{
|
|
/// <summary>
|
|
/// A Chapter is the lowest grouping of a reading medium. A Chapter contains a set of MangaFiles which represents the underlying
|
|
/// file (abstracted from type).
|
|
/// </summary>
|
|
public class ChapterDto
|
|
{
|
|
public int Id { get; init; }
|
|
/// <summary>
|
|
/// Range of chapters. Chapter 2-4 -> "2-4". Chapter 2 -> "2".
|
|
/// </summary>
|
|
public string Range { get; init; }
|
|
/// <summary>
|
|
/// Smallest number of the Range.
|
|
/// </summary>
|
|
public string Number { get; init; }
|
|
/// <summary>
|
|
/// Total number of pages in all MangaFiles
|
|
/// </summary>
|
|
public int Pages { get; init; }
|
|
/// <summary>
|
|
/// If this Chapter contains files that could only be identified as Series or has Special Identifier from filename
|
|
/// </summary>
|
|
public bool IsSpecial { get; init; }
|
|
/// <summary>
|
|
/// Used for books/specials to display custom title. For non-specials/books, will be set to <see cref="Range"/>
|
|
/// </summary>
|
|
public string Title { get; init; }
|
|
/// <summary>
|
|
/// The files that represent this Chapter
|
|
/// </summary>
|
|
public ICollection<MangaFileDto> Files { get; init; }
|
|
/// <summary>
|
|
/// Calculated at API time. Number of pages read for this Chapter for logged in user.
|
|
/// </summary>
|
|
public int PagesRead { get; set; }
|
|
/// <summary>
|
|
/// If the Cover Image is locked for this entity
|
|
/// </summary>
|
|
public bool CoverImageLocked { get; set; }
|
|
/// <summary>
|
|
/// Volume Id this Chapter belongs to
|
|
/// </summary>
|
|
public int VolumeId { get; init; }
|
|
/// <summary>
|
|
/// When chapter was created
|
|
/// </summary>
|
|
public DateTime Created { get; init; }
|
|
/// <summary>
|
|
/// When the chapter was released.
|
|
/// </summary>
|
|
/// <remarks>Metadata field</remarks>
|
|
public DateTime ReleaseDate { get; init; }
|
|
/// <summary>
|
|
/// Title of the Chapter/Issue
|
|
/// </summary>
|
|
/// <remarks>Metadata field</remarks>
|
|
public string TitleName { get; set; }
|
|
/// <summary>
|
|
/// Summary for the Chapter/Issue
|
|
/// </summary>
|
|
public string Summary { get; set; }
|
|
/// <summary>
|
|
/// Language for the Chapter/Issue
|
|
/// </summary>
|
|
public string Language { get; set; }
|
|
public ICollection<PersonDto> Writers { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Penciller { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Inker { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Colorist { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Letterer { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> CoverArtist { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Editor { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Publisher { get; set; } = new List<PersonDto>();
|
|
public ICollection<PersonDto> Translators { get; set; } = new List<PersonDto>();
|
|
public ICollection<TagDto> Tags { get; set; } = new List<TagDto>();
|
|
}
|
|
}
|