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);