using MongoDB.Entities; namespace PrivaPub.Models.Federation { public class ObjectRecord : Entity { public string ObjectURI { get; set; } public string PostId { get; set; } public string ObjectType { get; set; } public string Host { get; set; } public string Raw { get; set; }//the object exactly as it reached us, unless it was larger than MaxRawBytes public string RawHash { get; set; }//sha-256 of the raw bytes, hex public int RawBytes { get; set; } public bool RawTruncated { get; set; } public string ActivityContext { get; set; }//the delivering activity's @context, which an embedded object does not repeat public ObjectPath Path { get; set; } public bool Refetched { get; set; }//delivered, but read again from its origin because it came embedded from another one public string ActivityId { get; set; }//the activity that brought it, or that caused the fetch public string ActivityType { get; set; } public string ActivityActorURI { get; set; } public string Inbox { get; set; }//"shared" or "personal" when delivered public string SignatureScheme { get; set; } public string KeyId { get; set; } public string Algorithm { get; set; } public List SignedHeaders { get; set; } = new(); public DateTime ReceivedAt { get; set; } = DateTime.UtcNow; public DateTime? Published { get; set; } public DateTime? Updated { get; set; } public List Revisions { get; set; } = new(); } public class ObjectRevision { public string Raw { get; set; } public string RawHash { get; set; } public bool RawTruncated { get; set; } public string ActivityId { get; set; } public DateTime? Updated { get; set; } public DateTime ReceivedAt { get; set; } = DateTime.UtcNow; } public enum ObjectPath { Delivered, Fetched } }