Kavita/Kavita.Models/Entities/User/AppUserAnnotation.cs
Fesaa c62b20f54b
BE Tech Debt (#4497)
Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
Co-authored-by: Joe Milazzo <josephmajora@gmail.com>
2026-03-07 10:04:08 -08:00

80 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using Kavita.Models.Entities.Interfaces;
namespace Kavita.Models.Entities.User;
/// <summary>
/// Represents an annotation in the Epub reader
/// </summary>
public class AppUserAnnotation : IEntityDate
{
public int Id { get; set; }
/// <summary>
/// Starting point of the Highlight
/// </summary>
public required string XPath { get; set; }
/// <summary>
/// Ending point of the Highlight. Can be the same as <see cref="XPath"/>
/// </summary>
public string EndingXPath { get; set; }
/// <summary>
/// The text selected.
/// </summary>
public string SelectedText { get; set; }
/// <summary>
/// Rich text Comment
/// </summary>
public string? Comment { get; set; }
/// <summary>
/// The annotation in html format, this is generated by the UI (quill)
/// </summary>
public string? CommentHtml { get; set; }
/// <summary>
/// All html stripped from <see cref="CommentHtml"/>, this is done by the backend
/// </summary>
public string? CommentPlainText { get; set; }
/// <summary>
/// The number of characters selected
/// </summary>
public int HighlightCount { get; set; }
public int PageNumber { get; set; }
/// <summary>
/// Selected Highlight Slot Index [0-4]
/// </summary>
public int SelectedSlotIndex { get; set; }
/// <summary>
/// A calculated selection of the surrounding text. This does not update after creation.
/// </summary>
public string? Context { get; set; }
public bool ContainsSpoiler { get; set; }
/// <summary>
/// A set container userIds of all users who have liked this annotations
/// </summary>
public IList<int> Likes { get; set; } = new List<int>();
/// <summary>
/// Title of the TOC Chapter within Epub (not Chapter Entity)
/// </summary>
public string? ChapterTitle { get; set; }
public required int LibraryId { get; set; }
public Library Library { get; set; }
public required int SeriesId { get; set; }
public Series Series { get; set; }
public required int VolumeId { get; set; }
public required int ChapterId { get; set; }
public Chapter Chapter { get; set; }
public required int AppUserId { get; set; }
public AppUser AppUser { get; set; }
public DateTime Created { get; set; }
public DateTime CreatedUtc { get; set; }
public DateTime LastModified { get; set; }
public DateTime LastModifiedUtc { get; set; }
}