using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; namespace Iceshrimp.Backend.Core.Database.Tables; [Table("user")] [Index("Host")] [Index("UsernameLower", "Host", IsUnique = true)] [Index("UpdatedAt")] [Index("UsernameLower")] [Index("Uri")] [Index("LastActiveDate")] [Index("IsExplorable")] [Index("IsAdmin")] [Index("IsModerator")] [Index("CreatedAt")] [Index("Tags")] [Index("AvatarId", IsUnique = true)] [Index("BannerId", IsUnique = true)] [Index("Token", IsUnique = true)] public class User { [Key] [Column("id")] [StringLength(32)] public string Id { get; set; } = null!; /// /// The created date of the User. /// [Column("createdAt")] public DateTime CreatedAt { get; set; } /// /// The updated date of the User. /// [Column("updatedAt")] public DateTime? UpdatedAt { get; set; } [Column("lastFetchedAt")] public DateTime? LastFetchedAt { get; set; } /// /// The username of the User. /// [Column("username")] [StringLength(128)] public string Username { get; set; } = null!; /// /// The username (lowercased) of the User. /// [Column("usernameLower")] [StringLength(128)] public string UsernameLower { get; set; } = null!; /// /// The name of the User. /// [Column("name")] [StringLength(128)] public string? Name { get; set; } /// /// The count of followers. /// [Column("followersCount")] public int FollowersCount { get; set; } /// /// The count of following. /// [Column("followingCount")] public int FollowingCount { get; set; } /// /// The count of notes. /// [Column("notesCount")] public int NotesCount { get; set; } /// /// The ID of avatar DriveFile. /// [Column("avatarId")] [StringLength(32)] public string? AvatarId { get; set; } /// /// The ID of banner DriveFile. /// [Column("bannerId")] [StringLength(32)] public string? BannerId { get; set; } [Column("tags", TypeName = "character varying(128)[]")] public List Tags { get; set; } = []; /// /// Whether the User is suspended. /// [Column("isSuspended")] public bool IsSuspended { get; set; } /// /// Whether the User is silenced. /// [Column("isSilenced")] public bool IsSilenced { get; set; } /// /// Whether the User is locked. /// [Column("isLocked")] public bool IsLocked { get; set; } /// /// Whether the User is a bot. /// [Column("isBot")] public bool IsBot { get; set; } /// /// Whether the User is a cat. /// [Column("isCat")] public bool IsCat { get; set; } /// /// Whether the User is the admin. /// [Column("isAdmin")] public bool IsAdmin { get; set; } /// /// Whether the User is a moderator. /// [Column("isModerator")] public bool IsModerator { get; set; } [Column("emojis", TypeName = "character varying(128)[]")] public List Emojis { get; set; } = []; /// /// The host of the User. It will be null if the origin of the user is local. /// [Column("host")] [StringLength(512)] public string? Host { get; set; } /// /// The inbox URL of the User. It will be null if the origin of the user is local. /// [Column("inbox")] [StringLength(512)] public string? Inbox { get; set; } /// /// The sharedInbox URL of the User. It will be null if the origin of the user is local. /// [Column("sharedInbox")] [StringLength(512)] public string? SharedInbox { get; set; } /// /// The featured URL of the User. It will be null if the origin of the user is local. /// [Column("featured")] [StringLength(512)] public string? Featured { get; set; } /// /// The URI of the User. It will be null if the origin of the user is local. /// [Column("uri")] [StringLength(512)] public string? Uri { get; set; } /// /// The native access token of the User. It will be null if the origin of the user is local. /// [Column("token")] [StringLength(16)] public string? Token { get; set; } /// /// Whether the User is explorable. /// [Column("isExplorable")] public bool IsExplorable { get; set; } /// /// The URI of the user Follower Collection. It will be null if the origin of the user is local. /// [Column("followersUri")] [StringLength(512)] public string? FollowersUri { get; set; } [Column("lastActiveDate")] public DateTime? LastActiveDate { get; set; } [Column("hideOnlineStatus")] public bool HideOnlineStatus { get; set; } /// /// Whether the User is deleted. /// [Column("isDeleted")] public bool IsDeleted { get; set; } /// /// Overrides user drive capacity limit /// [Column("driveCapacityOverrideMb")] public int? DriveCapacityOverrideMb { get; set; } /// /// The URI of the new account of the User /// [Column("movedToUri")] [StringLength(512)] public string? MovedToUri { get; set; } /// /// URIs the user is known as too /// [Column("alsoKnownAs")] public string? AlsoKnownAs { get; set; } /// /// Whether to speak as a cat if isCat. /// [Column("speakAsCat")] public bool SpeakAsCat { get; set; } /// /// The URL of the avatar DriveFile /// [Column("avatarUrl")] [StringLength(512)] public string? AvatarUrl { get; set; } /// /// The blurhash of the avatar DriveFile /// [Column("avatarBlurhash")] [StringLength(128)] public string? AvatarBlurhash { get; set; } /// /// The URL of the banner DriveFile /// [Column("bannerUrl")] [StringLength(512)] public string? BannerUrl { get; set; } /// /// The blurhash of the banner DriveFile /// [Column("bannerBlurhash")] [StringLength(128)] public string? BannerBlurhash { get; set; } [InverseProperty("Assignee")] public virtual ICollection AbuseUserReportAssignees { get; set; } = new List(); [InverseProperty("Reporter")] public virtual ICollection AbuseUserReportReporters { get; set; } = new List(); [InverseProperty("TargetUser")] public virtual ICollection AbuseUserReportTargetUsers { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection AccessTokens { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection AnnouncementReads { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Antennas { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Apps { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection AttestationChallenges { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection AuthSessions { get; set; } = new List(); [ForeignKey("AvatarId")] [InverseProperty("UserAvatar")] public virtual DriveFile? Avatar { get; set; } [ForeignKey("BannerId")] [InverseProperty("UserBanner")] public virtual DriveFile? Banner { get; set; } [InverseProperty("Blockee")] public virtual ICollection BlockingBlockees { get; set; } = new List(); [InverseProperty("Blocker")] public virtual ICollection BlockingBlockers { get; set; } = new List(); [InverseProperty("Follower")] public virtual ICollection ChannelFollowings { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Channels { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Clips { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection DriveFiles { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection DriveFolders { get; set; } = new List(); [InverseProperty("Followee")] public virtual ICollection FollowRequestFollowees { get; set; } = new List(); [InverseProperty("Follower")] public virtual ICollection FollowRequestFollowers { get; set; } = new List(); [InverseProperty("Followee")] public virtual ICollection FollowingFollowees { get; set; } = new List(); [InverseProperty("Follower")] public virtual ICollection FollowingFollowers { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection GalleryLikes { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection GalleryPosts { get; set; } = new List(); [InverseProperty("User")] public virtual HtmlUserCacheEntry? HtmlUserCacheEntry { get; set; } [InverseProperty("Recipient")] public virtual ICollection MessagingMessageRecipients { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection MessagingMessageUsers { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection ModerationLogs { get; set; } = new List(); [InverseProperty("Mutee")] public virtual ICollection MutingMutees { get; set; } = new List(); [InverseProperty("Muter")] public virtual ICollection MutingMuters { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection NoteFavorites { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection NoteReactions { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection NoteThreadMutings { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection NoteUnreads { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection NoteWatchings { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Notes { get; set; } = new List(); [InverseProperty("Notifiee")] public virtual ICollection NotificationNotifiees { get; set; } = new List(); [InverseProperty("Notifier")] public virtual ICollection NotificationNotifiers { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection OauthTokens { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection PageLikes { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Pages { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection PasswordResetRequests { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection PollVotes { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection PromoReads { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection RegistryItems { get; set; } = new List(); [InverseProperty("Mutee")] public virtual ICollection RenoteMutingMutees { get; set; } = new List(); [InverseProperty("Muter")] public virtual ICollection RenoteMutingMuters { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Sessions { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Signins { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection SwSubscriptions { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection UserGroupInvitations { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection UserGroupMemberships { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection UserGroups { get; set; } = new List(); [InverseProperty("User")] public virtual UserKeypair? UserKeypair { get; set; } [InverseProperty("User")] public virtual ICollection UserListMembers { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection UserLists { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection UserNotePins { get; set; } = new List(); [InverseProperty("User")] public virtual UserProfile? UserProfile { get; set; } [InverseProperty("User")] public virtual UserPublickey? UserPublickey { get; set; } [InverseProperty("User")] public virtual ICollection UserSecurityKeys { get; set; } = new List(); [InverseProperty("User")] public virtual ICollection Webhooks { get; set; } = new List(); }