// <copyright file="BaseItemTvExtras.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>

namespace Jellyfin.Database.Implementations.Entities;

using System;

/// <summary>
/// Extension table for TV-specific columns on <see cref="BaseItemEntity"/>.
/// Populated only for TV.Episode, TV.Season, and TV.Series items.
/// </summary>
public class BaseItemTvExtras
{
    /// <summary>
    /// Gets or sets the ID of the parent <see cref="BaseItemEntity"/>. Primary key and foreign key.
    /// </summary>
    public required Guid ItemId { get; set; }

    /// <summary>
    /// Gets or sets the navigation back to the owning <see cref="BaseItemEntity"/>.
    /// </summary>
    public BaseItemEntity? Item { get; set; }

    /// <summary>
    /// Gets or sets the ID of the series this item belongs to.
    /// </summary>
    public Guid? SeriesId { get; set; }

    /// <summary>
    /// Gets or sets the ID of the season this item belongs to. Populated for episodes only.
    /// </summary>
    public Guid? SeasonId { get; set; }

    /// <summary>
    /// Gets or sets the name of the series.
    /// </summary>
    public string? SeriesName { get; set; }

    /// <summary>
    /// Gets or sets the name of the season. Populated for episodes only.
    /// </summary>
    public string? SeasonName { get; set; }

    /// <summary>
    /// Gets or sets the unique key used to group items belonging to the same series.
    /// </summary>
    public string? SeriesPresentationUniqueKey { get; set; }
}
