namespace Meezi.Core.Entities; /// /// A stored upload, recorded so identical files can be de-duplicated and reused /// instead of written to disk again. Files with the same content hash within a /// scope (café, or platform when is null) share one stored file. /// public class MediaAsset : BaseEntity { /// Owning café, or null for platform-level (admin) uploads. public string? CafeId { get; set; } /// SHA-256 of the file content, lowercase hex. public string ContentHash { get; set; } = string.Empty; public long SizeBytes { get; set; } public string ContentType { get; set; } = string.Empty; /// Public URL/path the file is served from (e.g. /uploads/{cafeId}/{name}). public string Url { get; set; } = string.Empty; /// Logical kind/prefix: menu_img, logo, cover, gallery, review, menu_3d, blog, ... public string Kind { get; set; } = string.Empty; public string? OriginalFileName { get; set; } }