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

namespace Jellyfin.Database.Implementations.Entities;

using System;

/// <summary>
/// Extension table for music-specific columns on <see cref="BaseItemEntity"/>.
/// Populated only for Audio.Audio items.
/// </summary>
public class BaseItemAudioExtras
{
    /// <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 album name this track belongs to.
    /// </summary>
    public string? Album { get; set; }

    /// <summary>
    /// Gets or sets the serialized list of track artists.
    /// </summary>
    public string? Artists { get; set; }

    /// <summary>
    /// Gets or sets the serialized list of album artists.
    /// </summary>
    public string? AlbumArtists { get; set; }

    /// <summary>
    /// Gets or sets the loudness units relative to full scale (LUFS) value for normalization.
    /// </summary>
    public float? LUFS { get; set; }

    /// <summary>
    /// Gets or sets the normalization gain in decibels.
    /// </summary>
    public float? NormalizationGain { get; set; }
}
