using MongoDB.Entities; namespace PrivaPub.Models.Social { public class Block : Entity { public string AvatarId { get; set; } public string TargetAccountId { get; set; } public string TargetActorURI { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } //a remote account that blocked one of our personas (an inbound Block): its posts and notifications are hidden from the //persona, the follows between them are gone, and the relationship says blocked_by, until it sends Undo{Block} public class BlockedBy : Entity { public string AvatarId { get; set; } public string ActorURI { get; set; } public string AccountId { get; set; }//the blocker's ForeignAvatar.ID public string ActivityURI { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } //a post an account elsewhere features (its `featured` collection, Add and Remove), shown first on its profile here; //the lowest Position first public class RemoteFeatured : Entity { public string ActorURI { get; set; } public string ObjectURI { get; set; } public string PostId { get; set; } public int Position { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } public class Mute : Entity { public string AvatarId { get; set; } public string TargetAccountId { get; set; } public string TargetActorURI { get; set; } public bool HideNotifications { get; set; } = true; public DateTime? ExpiresAt { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } public class AccountDomainBlock : Entity { public string AvatarId { get; set; } public string Domain { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } public class Bookmark : Entity { public string AvatarId { get; set; } public string PostId { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } public class Pin : Entity { public string AvatarId { get; set; } public string PostId { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } public class Report : Entity { public string ReporterAvatarId { get; set; } public string ReporterActorURI { get; set; } public string TargetAccountId { get; set; } public string TargetActorURI { get; set; } public List PostIds { get; set; } = new(); public List ObjectURIs { get; set; } = new(); public string Category { get; set; } = "other"; public string Comment { get; set; } public bool Forwarded { get; set; } public bool IsResolved { get; set; } public string ResolvedBy { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? ResolvedAt { get; set; } } }