using System.Text.Json.Serialization;
namespace DeepDrftContent.Services.FileDatabase.Models;
///
/// Base metadata for media entries
///
/// The key used to identify the media file
/// The file extension of the media
[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
[JsonDerivedType(typeof(MetaData), typeDiscriminator: "media")]
[JsonDerivedType(typeof(ImageMetaData), typeDiscriminator: "image")]
[JsonDerivedType(typeof(AudioMetaData), typeDiscriminator: "audio")]
public record MetaData(string MediaKey, string Extension);
///
/// Extended metadata for image entries, including aspect ratio
///
/// The key used to identify the media file
/// The file extension of the media
/// The aspect ratio of the image
public record ImageMetaData(string MediaKey, string Extension, double AspectRatio)
: MetaData(MediaKey, Extension);
///
/// Extended metadata for audio entries, including duration and bitrate
///
/// The key used to identify the media file
/// The file extension of the media
/// The duration of the audio in seconds
/// The bitrate of the audio in kbps
public record AudioMetaData(string MediaKey, string Extension, double Duration, int Bitrate)
: MetaData(MediaKey, Extension);