namespace ErsatzTV.Core.Domain; public class LibraryFolder { public int Id { get; set; } public string Path { get; set; } /// /// SHA-256 hex of (), the /// indexable stand-in for the unbounded column that backs the unique /// (LibraryPathId, PathHash) constraint — the same shape as MediaFile.PathHash. /// Nullable: rows created before ersatztv#491 carry null until a scan heals them, and a /// unique index treats nulls as distinct so those legacy rows never collide. /// public string PathHash { get; set; } public int LibraryPathId { get; set; } public LibraryPath LibraryPath { get; set; } public int? ParentId { get; set; } public LibraryFolder Parent { get; set; } public ICollection Children { get; set; } public ICollection MediaFiles { get; set; } public ImageFolderDuration ImageFolderDuration { get; set; } public string Etag { get; set; } }