using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Point = NetTopologySuite.Geometries.Point; namespace DysonNetwork.Sphere.Account; public class ActionLogType { public const string NewLogin = "login"; public const string ChallengeAttempt = "challenges.attempt"; public const string ChallengeSuccess = "challenges.success"; public const string ChallengeFailure = "challenges.failure"; public const string PostCreate = "posts.create"; public const string PostUpdate = "posts.update"; public const string PostDelete = "posts.delete"; public const string PostReact = "posts.react"; public const string MessageCreate = "messages.create"; public const string MessageUpdate = "messages.update"; public const string MessageDelete = "messages.delete"; public const string MessageReact = "messages.react"; public const string PublisherCreate = "publishers.create"; public const string PublisherUpdate = "publishers.update"; public const string PublisherDelete = "publishers.delete"; public const string PublisherMemberInvite = "publishers.members.invite"; public const string PublisherMemberJoin = "publishers.members.join"; public const string PublisherMemberLeave = "publishers.members.leave"; public const string PublisherMemberKick = "publishers.members.kick"; public const string RealmCreate = "realms.create"; public const string RealmUpdate = "realms.update"; public const string RealmDelete = "realms.delete"; public const string RealmInvite = "realms.invite"; public const string RealmJoin = "realms.join"; public const string RealmLeave = "realms.leave"; public const string RealmKick = "realms.kick"; public const string RealmAdjustRole = "realms.role.edit"; public const string ChatroomCreate = "chatrooms.create"; public const string ChatroomUpdate = "chatrooms.update"; public const string ChatroomDelete = "chatrooms.delete"; public const string ChatroomInvite = "chatrooms.invite"; public const string ChatroomJoin = "chatrooms.join"; public const string ChatroomLeave = "chatrooms.leave"; public const string ChatroomKick = "chatrooms.kick"; public const string ChatroomAdjustRole = "chatrooms.role.edit"; } public class ActionLog : ModelBase { public Guid Id { get; set; } = Guid.NewGuid(); [MaxLength(4096)] public string Action { get; set; } = null!; [Column(TypeName = "jsonb")] public Dictionary Meta { get; set; } = new(); [MaxLength(512)] public string? UserAgent { get; set; } [MaxLength(128)] public string? IpAddress { get; set; } public Point? Location { get; set; } public Guid AccountId { get; set; } public Account Account { get; set; } = null!; public Guid? SessionId { get; set; } public Auth.Session? Session { get; set; } = null!; }