using System.IO; using Azaion.Common.Extensions; using Azaion.Common.Services; namespace Azaion.Common.Database; public class MediaFile { public string Hash { get; set; } = null!; public string MediaUrl { get; set; } = null!; public string Name { get; set; } = null!; public DateTime? LastProcessedDate { get; set; } public MediaTypes MediaType { get; set; } = MediaTypes.None; public MediaStatus Status { get; set; } = MediaStatus.None; public IEnumerable Annotations { get; set; } = null!; public MediaFile() { } public MediaFile(string path) { var fileInfo = new FileInfo(path); var mediaType = Constants.DefaultVideoFormats.Contains(fileInfo.Extension, StringComparer.OrdinalIgnoreCase) ? MediaTypes.Video : Constants.DefaultImageFormats.Contains(fileInfo.Extension, StringComparer.OrdinalIgnoreCase) ? MediaTypes.Image : MediaTypes.None; Hash = fileInfo.CalcHash(); MediaUrl = path; Name = path.ToFName(); MediaType = mediaType; Status = MediaStatus.New; LastProcessedDate = null; } } public enum MediaTypes { None = 0, Video = 1, Image = 2 } public enum MediaStatus { None, New, AIProcessing, AIProcessed, ManualCreated, Confirmed, Error }