Iceshrimp.NET/Iceshrimp.Backend/Core/Database/Migrations/DatabaseContextModelSnapshot.cs

6242 lines
249 KiB
C#

// <auto-generated />
using System;
using System.Collections.Generic;
using Iceshrimp.Backend.Core.Database;
using Iceshrimp.Backend.Core.Database.Tables;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Iceshrimp.Backend.Core.Database.Migrations
{
[DbContext(typeof(DatabaseContext))]
partial class DatabaseContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "antenna_src_enum", new[] { "home", "all", "users", "list", "group", "instances" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "filter_action_enum", new[] { "warn", "hide" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "filter_context_enum", new[] { "home", "lists", "threads", "notifications", "accounts", "public" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "job_status", new[] { "queued", "delayed", "running", "completed", "failed" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "marker_type_enum", new[] { "home", "notifications" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "note_visibility_enum", new[] { "public", "home", "followers", "specified" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "notification_type_enum", new[] { "follow", "mention", "reply", "renote", "quote", "like", "reaction", "pollVote", "pollEnded", "receiveFollowRequest", "followRequestAccepted", "groupInvited", "app", "edit", "bite" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "page_visibility_enum", new[] { "public", "followers", "specified" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "push_subscription_policy_enum", new[] { "all", "followed", "follower", "none" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "relay_status_enum", new[] { "requesting", "accepted", "rejected" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "user_profile_ffvisibility_enum", new[] { "public", "followers", "private" });
NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "pg_trgm");
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.AllowedInstance", b =>
{
b.Property<string>("Host")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("host");
b.Property<bool>("IsImported")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("imported");
b.HasKey("Host");
b.ToTable("allowed_instance");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Announcement", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Announcement.");
b.Property<string>("ImageUrl")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("imageUrl");
b.Property<bool>("IsGoodNews")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isGoodNews");
b.Property<bool>("ShowPopup")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("showPopup");
b.Property<string>("Text")
.IsRequired()
.HasMaxLength(8192)
.HasColumnType("character varying(8192)")
.HasColumnName("text");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("title");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the Announcement.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.ToTable("announcement");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.AnnouncementRead", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("AnnouncementId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("announcementId");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the AnnouncementRead.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("AnnouncementId");
b.HasIndex("UserId");
b.HasIndex("UserId", "AnnouncementId")
.IsUnique();
b.ToTable("announcement_read");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Antenna", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<bool>("CaseSensitive")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("caseSensitive");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Antenna.");
b.Property<List<List<string>>>("ExcludeKeywords")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("excludeKeywords")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<string>("Expression")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("expression");
b.Property<List<string>>("Instances")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("instances")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<List<List<string>>>("Keywords")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("keywords")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the Antenna.");
b.Property<bool>("Notify")
.HasColumnType("boolean")
.HasColumnName("notify");
b.Property<Antenna.AntennaSource>("Source")
.HasColumnType("antenna_src_enum")
.HasColumnName("src");
b.Property<string>("UserGroupMemberId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userGroupMemberId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.Property<string>("UserListId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userListId");
b.PrimitiveCollection<List<string>>("Users")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(1024)[]")
.HasColumnName("users")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<bool>("WithFile")
.HasColumnType("boolean")
.HasColumnName("withFile");
b.Property<bool>("WithReplies")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("withReplies");
b.HasKey("Id");
b.HasIndex("UserGroupMemberId");
b.HasIndex("UserId");
b.HasIndex("UserListId");
b.ToTable("antenna");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.AttestationChallenge", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.Property<string>("Challenge")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("challenge")
.HasComment("Hex-encoded sha256 hash of the challenge.");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The date challenge was created for expiry purposes.");
b.Property<bool>("RegistrationChallenge")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("registrationChallenge")
.HasComment("Indicates that the challenge is only for registration purposes if true to prevent the challenge for being used as authentication.");
b.HasKey("Id", "UserId");
b.HasIndex("Challenge");
b.HasIndex("UserId");
b.ToTable("attestation_challenge");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Bite", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("TargetBiteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("targetBiteId");
b.Property<string>("TargetNoteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("targetNoteId");
b.Property<string>("TargetUserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("targetUserId");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri");
b.Property<string>("UserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("userHost");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("TargetBiteId");
b.HasIndex("TargetNoteId");
b.HasIndex("TargetUserId");
b.HasIndex("Uri");
b.HasIndex("UserHost");
b.HasIndex("UserId");
b.ToTable("bite");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.BlockedInstance", b =>
{
b.Property<string>("Host")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("host");
b.Property<bool>("IsImported")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("imported");
b.Property<string>("Reason")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("reason");
b.HasKey("Host");
b.ToTable("blocked_instance");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Blocking", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("BlockeeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("blockeeId")
.HasComment("The blockee user ID.");
b.Property<string>("BlockerId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("blockerId")
.HasComment("The blocker user ID.");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Blocking.");
b.HasKey("Id");
b.HasIndex("BlockeeId");
b.HasIndex("BlockerId");
b.HasIndex("CreatedAt");
b.HasIndex("BlockerId", "BlockeeId")
.IsUnique();
b.ToTable("blocking");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.BubbleInstance", b =>
{
b.Property<string>("Host")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("host");
b.HasKey("Host");
b.ToTable("bubble_instance");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.CacheEntry", b =>
{
b.Property<string>("Key")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("key");
b.Property<DateTime?>("Expiry")
.HasColumnType("timestamp with time zone")
.HasColumnName("expiry");
b.Property<TimeSpan?>("Ttl")
.HasColumnType("interval")
.HasColumnName("ttl");
b.Property<string>("Value")
.HasColumnType("text")
.HasColumnName("value");
b.HasKey("Key");
b.HasIndex("Expiry");
b.ToTable("cache_store");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Channel", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("BannerId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("bannerId")
.HasComment("The ID of banner Channel.");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Channel.");
b.Property<string>("Description")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("description")
.HasComment("The description of the Channel.");
b.Property<DateTime?>("LastNotedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastNotedAt");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the Channel.");
b.Property<int>("NotesCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("notesCount")
.HasComment("The count of notes.");
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.Property<int>("UsersCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("usersCount")
.HasComment("The count of users.");
b.HasKey("Id");
b.HasIndex("BannerId");
b.HasIndex("CreatedAt");
b.HasIndex("LastNotedAt");
b.HasIndex("NotesCount");
b.HasIndex("UserId");
b.HasIndex("UsersCount");
b.ToTable("channel");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ChannelFollowing", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the ChannelFollowing.");
b.Property<string>("FolloweeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followeeId")
.HasComment("The followee channel ID.");
b.Property<string>("FollowerId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followerId")
.HasComment("The follower user ID.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("FolloweeId");
b.HasIndex("FollowerId");
b.HasIndex("FollowerId", "FolloweeId")
.IsUnique();
b.ToTable("channel_following");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ChannelNotePin", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("ChannelId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("channelId");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the ChannelNotePin.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.HasKey("Id");
b.HasIndex("ChannelId");
b.HasIndex("NoteId");
b.HasIndex("ChannelId", "NoteId")
.IsUnique();
b.ToTable("channel_note_pin");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Clip", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Clip.");
b.Property<string>("Description")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("description")
.HasComment("The description of the Clip.");
b.Property<bool>("IsPublic")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isPublic");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the Clip.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("clip");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ClipNote", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("ClipId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("clipId")
.HasComment("The clip ID.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId")
.HasComment("The note ID.");
b.HasKey("Id");
b.HasIndex("ClipId");
b.HasIndex("NoteId");
b.HasIndex("NoteId", "ClipId")
.IsUnique();
b.ToTable("clip_note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.DriveFile", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("AccessKey")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("accessKey");
b.Property<string>("Blurhash")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("blurhash")
.HasComment("The BlurHash string.");
b.Property<string>("Comment")
.HasColumnType("text")
.HasColumnName("comment")
.HasComment("The comment of the DriveFile.");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the DriveFile.");
b.Property<string>("FolderId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("folderId")
.HasComment("The parent folder ID. If null, it means the DriveFile is located in root.");
b.Property<bool>("IsLink")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isLink")
.HasComment("Whether the DriveFile is direct link to remote server.");
b.Property<bool>("IsSensitive")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isSensitive")
.HasComment("Whether the DriveFile is NSFW.");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("name")
.HasComment("The file name of the DriveFile.");
b.Property<DriveFile.FileProperties>("Properties")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("properties")
.HasDefaultValueSql("'{}'::jsonb")
.HasComment("The any properties of the DriveFile. For example, it includes image width/height.");
b.Property<string>("PublicAccessKey")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("webpublicAccessKey");
b.Property<string>("PublicMimeType")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("webpublicType");
b.Property<string>("PublicUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("webpublicUrl")
.HasComment("The URL of the webpublic of the DriveFile.");
b.Property<Dictionary<string, string>>("RequestHeaders")
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("requestHeaders")
.HasDefaultValueSql("'{}'::jsonb");
b.Property<string>("RequestIp")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("requestIp");
b.Property<string>("Sha256")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("sha256")
.HasComment("The SHA256 hash of the DriveFile.");
b.Property<int>("Size")
.HasColumnType("integer")
.HasColumnName("size")
.HasComment("The file size (bytes) of the DriveFile.");
b.Property<string>("Src")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("src");
b.Property<bool>("StoredInternal")
.HasColumnType("boolean")
.HasColumnName("storedInternal");
b.Property<string>("ThumbnailAccessKey")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("thumbnailAccessKey");
b.Property<string>("ThumbnailMimeType")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("thumbnailType");
b.Property<string>("ThumbnailUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("thumbnailUrl")
.HasComment("The URL of the thumbnail of the DriveFile.");
b.Property<string>("Type")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("type")
.HasComment("The content type (MIME) of the DriveFile.");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri")
.HasComment("The URI of the DriveFile. it will be null when the DriveFile is local.");
b.Property<string>("Url")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("url")
.HasComment("The URL of the DriveFile.");
b.Property<string>("UserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("userHost")
.HasComment("The host of owner. It will be null if the user in local.");
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.HasKey("Id");
b.HasIndex("AccessKey");
b.HasIndex("CreatedAt");
b.HasIndex("FolderId");
b.HasIndex("IsLink");
b.HasIndex("IsSensitive");
b.HasIndex("PublicAccessKey");
b.HasIndex("Sha256");
b.HasIndex("ThumbnailAccessKey");
b.HasIndex("Type");
b.HasIndex("Uri");
b.HasIndex("UserHost");
b.HasIndex("UserId");
b.HasIndex("UserId", "FolderId", "Id");
b.ToTable("drive_file");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.DriveFolder", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the DriveFolder.");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the DriveFolder.");
b.Property<string>("ParentId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("parentId")
.HasComment("The parent folder ID. If null, it means the DriveFolder is located in root.");
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("ParentId");
b.HasIndex("UserId");
b.ToTable("drive_folder");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Emoji", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Category")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("category");
b.Property<int?>("Height")
.HasColumnType("integer")
.HasColumnName("height")
.HasComment("Image height");
b.Property<string>("Host")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("host");
b.Property<string>("License")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("license");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name");
b.Property<string>("OriginalUrl")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("originalUrl");
b.Property<string>("RawPublicUrl")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("publicUrl")
.HasDefaultValueSql("''::character varying");
b.Property<bool>("Sensitive")
.HasColumnType("boolean")
.HasColumnName("sensitive");
b.PrimitiveCollection<List<string>>("Tags")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("tags")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("Type")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("type");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri");
b.Property<int?>("Width")
.HasColumnType("integer")
.HasColumnName("width")
.HasComment("Image width");
b.HasKey("Id");
b.HasIndex("Host");
b.HasIndex("Name");
b.HasIndex("Name", "Host")
.IsUnique();
NpgsqlIndexBuilderExtensions.AreNullsDistinct(b.HasIndex("Name", "Host"), false);
b.HasIndex(new[] { "Host" }, "GIN_TRGM_emoji_host");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "Host" }, "GIN_TRGM_emoji_host"), "gin");
NpgsqlIndexBuilderExtensions.HasOperators(b.HasIndex(new[] { "Host" }, "GIN_TRGM_emoji_host"), new[] { "gin_trgm_ops" });
b.HasIndex(new[] { "Name" }, "GIN_TRGM_emoji_name");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "Name" }, "GIN_TRGM_emoji_name"), "gin");
NpgsqlIndexBuilderExtensions.HasOperators(b.HasIndex(new[] { "Name" }, "GIN_TRGM_emoji_name"), new[] { "gin_trgm_ops" });
b.ToTable("emoji");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Filter", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<Filter.FilterAction>("Action")
.HasColumnType("filter_action_enum")
.HasColumnName("action");
b.PrimitiveCollection<List<Filter.FilterContext>>("Contexts")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("filter_context_enum[]")
.HasColumnName("contexts")
.HasDefaultValueSql("'{}'::public.filter_context_enum[]");
b.Property<DateTime?>("Expiry")
.HasColumnType("timestamp with time zone")
.HasColumnName("expiry");
b.PrimitiveCollection<List<string>>("Keywords")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("text[]")
.HasColumnName("keywords")
.HasDefaultValueSql("'{}'::varchar[]");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("user_id")
.HasColumnType("character varying(32)");
b.HasKey("Id");
b.HasIndex("user_id");
b.ToTable("filter");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.FollowRequest", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the FollowRequest.");
b.Property<string>("FolloweeHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followeeHost")
.HasComment("[Denormalized]");
b.Property<string>("FolloweeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followeeId")
.HasComment("The followee user ID.");
b.Property<string>("FolloweeInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followeeInbox")
.HasComment("[Denormalized]");
b.Property<string>("FolloweeSharedInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followeeSharedInbox")
.HasComment("[Denormalized]");
b.Property<string>("FollowerHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followerHost")
.HasComment("[Denormalized]");
b.Property<string>("FollowerId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followerId")
.HasComment("The follower user ID.");
b.Property<string>("FollowerInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followerInbox")
.HasComment("[Denormalized]");
b.Property<string>("FollowerSharedInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followerSharedInbox")
.HasComment("[Denormalized]");
b.Property<Guid?>("RelationshipId")
.HasColumnType("uuid")
.HasColumnName("relationshipId");
b.Property<string>("RequestId")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("requestId")
.HasComment("id of Follow Activity.");
b.HasKey("Id");
b.HasIndex("FolloweeId");
b.HasIndex("FollowerId");
b.HasIndex("FollowerId", "FolloweeId")
.IsUnique();
b.ToTable("follow_request");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Following", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Following.");
b.Property<string>("FolloweeHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followeeHost")
.HasComment("[Denormalized]");
b.Property<string>("FolloweeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followeeId")
.HasComment("The followee user ID.");
b.Property<string>("FolloweeInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followeeInbox")
.HasComment("[Denormalized]");
b.Property<string>("FolloweeSharedInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followeeSharedInbox")
.HasComment("[Denormalized]");
b.Property<string>("FollowerHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followerHost")
.HasComment("[Denormalized]");
b.Property<string>("FollowerId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followerId")
.HasComment("The follower user ID.");
b.Property<string>("FollowerInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followerInbox")
.HasComment("[Denormalized]");
b.Property<string>("FollowerSharedInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followerSharedInbox")
.HasComment("[Denormalized]");
b.Property<Guid?>("RelationshipId")
.HasColumnType("uuid")
.HasColumnName("relationshipId");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("FolloweeHost");
b.HasIndex("FolloweeId");
b.HasIndex("FollowerHost");
b.HasIndex("FollowerId");
b.HasIndex("FollowerId", "FolloweeId")
.IsUnique();
b.ToTable("following");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.GalleryLike", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("PostId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("postId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("PostId");
b.HasIndex("UserId");
b.HasIndex("UserId", "PostId")
.IsUnique();
b.ToTable("gallery_like");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.GalleryPost", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the GalleryPost.");
b.Property<string>("Description")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("description");
b.PrimitiveCollection<List<string>>("FileIds")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("fileIds")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<bool>("IsSensitive")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isSensitive")
.HasComment("Whether the post is sensitive.");
b.Property<int>("LikedCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("likedCount");
b.PrimitiveCollection<List<string>>("Tags")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("tags")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("title");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the GalleryPost.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The ID of author.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("FileIds");
b.HasIndex("IsSensitive");
b.HasIndex("LikedCount");
b.HasIndex("Tags");
b.HasIndex("UpdatedAt");
b.HasIndex("UserId");
b.ToTable("gallery_post");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Hashtag", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name");
b.HasKey("Id");
b.HasIndex("Name")
.IsUnique();
b.ToTable("hashtag");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Instance", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CaughtAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("caughtAt")
.HasComment("The caught date of the Instance.");
b.Property<string>("Description")
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("description");
b.Property<string>("FaviconUrl")
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("faviconUrl");
b.Property<string>("Host")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("host")
.HasComment("The host of the Instance.");
b.Property<string>("IconUrl")
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("iconUrl");
b.Property<int>("IncomingFollows")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("incomingFollows");
b.Property<DateTime?>("InfoUpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("infoUpdatedAt");
b.Property<bool>("IsNotResponding")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isNotResponding");
b.Property<bool>("IsSuspended")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isSuspended");
b.Property<DateTime>("LastCommunicatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastCommunicatedAt");
b.Property<DateTime?>("LatestRequestReceivedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("latestRequestReceivedAt");
b.Property<DateTime?>("LatestRequestSentAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("latestRequestSentAt");
b.Property<int?>("LatestStatus")
.HasColumnType("integer")
.HasColumnName("latestStatus");
b.Property<string>("MaintainerEmail")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("maintainerEmail");
b.Property<string>("MaintainerName")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("maintainerName");
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("name");
b.Property<int>("NotesCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("notesCount")
.HasComment("The count of the notes of the Instance.");
b.Property<bool?>("OpenRegistrations")
.HasColumnType("boolean")
.HasColumnName("openRegistrations");
b.Property<int>("OutgoingFollows")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("outgoingFollows");
b.Property<string>("SoftwareName")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("softwareName")
.HasComment("The software of the Instance.");
b.Property<string>("SoftwareVersion")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("softwareVersion");
b.Property<string>("ThemeColor")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("themeColor");
b.Property<int>("UsersCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("usersCount")
.HasComment("The count of the users of the Instance.");
b.HasKey("Id");
b.HasIndex("CaughtAt");
b.HasIndex("Host")
.IsUnique();
b.HasIndex("IncomingFollows");
b.HasIndex("IsSuspended");
b.HasIndex("OutgoingFollows");
b.ToTable("instance");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Job", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<string>("Data")
.IsRequired()
.HasColumnType("text")
.HasColumnName("data");
b.Property<DateTime?>("DelayedUntil")
.HasColumnType("timestamp with time zone")
.HasColumnName("delayed_until");
b.Property<string>("Exception")
.HasColumnType("text")
.HasColumnName("exception");
b.Property<string>("ExceptionMessage")
.HasColumnType("text")
.HasColumnName("exception_message");
b.Property<string>("ExceptionSource")
.HasColumnType("text")
.HasColumnName("exception_source");
b.Property<DateTime?>("FinishedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("finished_at");
b.Property<string>("Mutex")
.HasColumnType("text")
.HasColumnName("mutex");
b.Property<string>("Queue")
.IsRequired()
.HasColumnType("text")
.HasColumnName("queue");
b.Property<DateTime>("QueuedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("queued_at")
.HasDefaultValueSql("now()");
b.Property<int>("RetryCount")
.HasColumnType("integer")
.HasColumnName("retry_count");
b.Property<string>("StackTrace")
.HasColumnType("text")
.HasColumnName("stack_trace");
b.Property<DateTime?>("StartedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("started_at");
b.Property<Job.JobStatus>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("job_status")
.HasDefaultValue(Job.JobStatus.Queued)
.HasColumnName("status");
b.HasKey("Id");
b.HasIndex("DelayedUntil");
b.HasIndex("FinishedAt");
b.HasIndex("Mutex")
.IsUnique();
b.HasIndex("Queue");
b.HasIndex("Status");
b.ToTable("jobs");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Marker", b =>
{
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.Property<Marker.MarkerType>("Type")
.HasMaxLength(32)
.HasColumnType("marker_type_enum")
.HasColumnName("type");
b.Property<DateTime>("LastUpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastUpdated");
b.Property<string>("Position")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("position");
b.Property<int>("Version")
.IsConcurrencyToken()
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("version");
b.HasKey("UserId", "Type");
b.HasIndex("UserId");
b.ToTable("marker");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.MessagingMessage", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the MessagingMessage.");
b.Property<string>("FileId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("fileId");
b.Property<string>("GroupId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("groupId")
.HasComment("The recipient group ID.");
b.Property<bool>("IsRead")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isRead");
b.PrimitiveCollection<List<string>>("Reads")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("reads")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("RecipientId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("recipientId")
.HasComment("The recipient user ID.");
b.Property<string>("Text")
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("text");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The sender user ID.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("FileId");
b.HasIndex("GroupId");
b.HasIndex("RecipientId");
b.HasIndex("UserId");
b.ToTable("messaging_message");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Meta", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.PrimitiveCollection<List<string>>("AllowedHosts")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("allowedHosts")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("AutofollowedAccount")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("autofollowedAccount");
b.Property<string>("BackgroundImageUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("backgroundImageUrl");
b.Property<string>("BannerUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("bannerUrl");
b.PrimitiveCollection<List<string>>("BlockedHosts")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("blockedHosts")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<bool>("CacheRemoteFiles")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("cacheRemoteFiles");
b.PrimitiveCollection<List<string>>("CustomMotd")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("customMOTD")
.HasDefaultValueSql("'{}'::character varying[]");
b.PrimitiveCollection<List<string>>("CustomSplashIcons")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("customSplashIcons")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("DeeplAuthKey")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("deeplAuthKey");
b.Property<bool>("DeeplIsPro")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("deeplIsPro");
b.Property<string>("DefaultDarkTheme")
.HasMaxLength(8192)
.HasColumnType("character varying(8192)")
.HasColumnName("defaultDarkTheme");
b.Property<string>("DefaultLightTheme")
.HasMaxLength(8192)
.HasColumnType("character varying(8192)")
.HasColumnName("defaultLightTheme");
b.Property<string>("DefaultReaction")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("defaultReaction")
.HasDefaultValueSql("'⭐'::character varying");
b.Property<string>("Description")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("description");
b.Property<bool>("DisableGlobalTimeline")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("disableGlobalTimeline");
b.Property<bool>("DisableLocalTimeline")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("disableLocalTimeline");
b.Property<bool>("DisableRecommendedTimeline")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("disableRecommendedTimeline");
b.Property<bool>("DisableRegistration")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("disableRegistration");
b.Property<string>("DiscordClientId")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("discordClientId");
b.Property<string>("DiscordClientSecret")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("discordClientSecret");
b.Property<string>("DonationLink")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("donationLink");
b.Property<string>("Email")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("email");
b.Property<bool>("EmailRequiredForSignup")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("emailRequiredForSignup");
b.Property<bool>("EnableActiveEmailValidation")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("enableActiveEmailValidation");
b.Property<bool>("EnableDiscordIntegration")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableDiscordIntegration");
b.Property<bool>("EnableEmail")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableEmail");
b.Property<bool>("EnableGithubIntegration")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableGithubIntegration");
b.Property<bool>("EnableHcaptcha")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableHcaptcha");
b.Property<bool>("EnableIdenticonGeneration")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("enableIdenticonGeneration");
b.Property<bool>("EnableIpLogging")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableIpLogging");
b.Property<bool>("EnableRecaptcha")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableRecaptcha");
b.Property<bool>("EnableServerMachineStats")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("enableServerMachineStats");
b.Property<string>("ErrorImageUrl")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("errorImageUrl")
.HasDefaultValueSql("'/static-assets/badges/error.png'::character varying");
b.Property<Dictionary<string, bool>>("ExperimentalFeatures")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("experimentalFeatures")
.HasDefaultValueSql("'{}'::jsonb");
b.Property<string>("FeedbackUrl")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("feedbackUrl")
.HasDefaultValueSql("'https://iceshrimp.dev/iceshrimp/iceshrimp/issues/new'::character varying");
b.Property<string>("GithubClientId")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("githubClientId");
b.Property<string>("GithubClientSecret")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("githubClientSecret");
b.Property<string>("HcaptchaSecretKey")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("hcaptchaSecretKey");
b.Property<string>("HcaptchaSiteKey")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("hcaptchaSiteKey");
b.PrimitiveCollection<List<string>>("HiddenTags")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("hiddenTags")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("IconUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("iconUrl");
b.PrimitiveCollection<List<string>>("Langs")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(64)[]")
.HasColumnName("langs")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("LibreTranslateApiKey")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("libreTranslateApiKey");
b.Property<string>("LibreTranslateApiUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("libreTranslateApiUrl");
b.Property<int>("LocalDriveCapacityMb")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(1024)
.HasColumnName("localDriveCapacityMb")
.HasComment("Drive capacity of a local user (MB)");
b.Property<string>("LogoImageUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("logoImageUrl");
b.Property<string>("MaintainerEmail")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("maintainerEmail");
b.Property<string>("MaintainerName")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("maintainerName");
b.Property<string>("MascotImageUrl")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("mascotImageUrl")
.HasDefaultValueSql("'/static-assets/badges/info.png'::character varying");
b.Property<string>("Name")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name");
b.Property<string>("ObjectStorageAccessKey")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStorageAccessKey");
b.Property<string>("ObjectStorageBaseUrl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStorageBaseUrl");
b.Property<string>("ObjectStorageBucket")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStorageBucket");
b.Property<string>("ObjectStorageEndpoint")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStorageEndpoint");
b.Property<int?>("ObjectStoragePort")
.HasColumnType("integer")
.HasColumnName("objectStoragePort");
b.Property<string>("ObjectStoragePrefix")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStoragePrefix");
b.Property<string>("ObjectStorageRegion")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStorageRegion");
b.Property<bool>("ObjectStorageS3ForcePathStyle")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("objectStorageS3ForcePathStyle");
b.Property<string>("ObjectStorageSecretKey")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("objectStorageSecretKey");
b.Property<bool>("ObjectStorageSetPublicRead")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("objectStorageSetPublicRead");
b.Property<bool>("ObjectStorageUseProxy")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("objectStorageUseProxy");
b.Property<bool>("ObjectStorageUseSsl")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("objectStorageUseSSL");
b.Property<string>("PinnedClipId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("pinnedClipId");
b.PrimitiveCollection<List<string>>("PinnedPages")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(512)[]")
.HasColumnName("pinnedPages")
.HasDefaultValueSql("'{/featured,/channels,/explore,/pages,/about-iceshrimp}'::character varying[]");
b.PrimitiveCollection<List<string>>("PinnedUsers")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("pinnedUsers")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<bool>("PrivateMode")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("privateMode");
b.Property<string>("RecaptchaSecretKey")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("recaptchaSecretKey");
b.Property<string>("RecaptchaSiteKey")
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("recaptchaSiteKey");
b.PrimitiveCollection<List<string>>("RecommendedInstances")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("recommendedInstances")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<int>("RemoteDriveCapacityMb")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(32)
.HasColumnName("remoteDriveCapacityMb")
.HasComment("Drive capacity of a remote user (MB)");
b.Property<string>("RepositoryUrl")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("repositoryUrl")
.HasDefaultValueSql("'https://iceshrimp.dev/iceshrimp/iceshrimp'::character varying");
b.Property<bool>("SecureMode")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("secureMode");
b.PrimitiveCollection<List<string>>("SilencedHosts")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("silencedHosts")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("SmtpHost")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("smtpHost");
b.Property<string>("SmtpPass")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("smtpPass");
b.Property<int?>("SmtpPort")
.HasColumnType("integer")
.HasColumnName("smtpPort");
b.Property<bool>("SmtpSecure")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("smtpSecure");
b.Property<string>("SmtpUser")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("smtpUser");
b.Property<string>("SummalyProxy")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("summalyProxy");
b.Property<string>("SwPrivateKey")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("swPrivateKey");
b.Property<string>("SwPublicKey")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("swPublicKey");
b.Property<string>("ThemeColor")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("themeColor");
b.Property<string>("ToSurl")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("ToSUrl");
b.Property<bool>("UseObjectStorage")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("useObjectStorage");
b.HasKey("Id");
b.ToTable("meta");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.MetaStoreEntry", b =>
{
b.Property<string>("Key")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("key");
b.Property<string>("Value")
.HasColumnType("text")
.HasColumnName("value");
b.HasKey("Key");
b.HasIndex("Key", "Value");
b.ToTable("meta_store");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ModerationLog", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the ModerationLog.");
b.Property<string>("Info")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("info");
b.Property<string>("Type")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("type");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("moderation_log");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Muting", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Muting.");
b.Property<DateTime?>("ExpiresAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("expiresAt");
b.Property<string>("MuteeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("muteeId")
.HasComment("The mutee user ID.");
b.Property<string>("MuterId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("muterId")
.HasComment("The muter user ID.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("ExpiresAt");
b.HasIndex("MuteeId");
b.HasIndex("MuterId");
b.HasIndex("MuterId", "MuteeId")
.IsUnique();
b.ToTable("muting");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Note", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.PrimitiveCollection<List<string>>("AttachedFileTypes")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("attachedFileTypes")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("ChannelId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("channelId")
.HasComment("The ID of source channel.");
b.Property<string>("CombinedAltText")
.HasColumnType("text")
.HasColumnName("combinedAltText");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Note.");
b.Property<string>("Cw")
.HasColumnType("text")
.HasColumnName("cw");
b.PrimitiveCollection<List<string>>("Emojis")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("emojis")
.HasDefaultValueSql("'{}'::character varying[]");
b.PrimitiveCollection<List<string>>("FileIds")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("fileIds")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<bool>("HasPoll")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("hasPoll");
b.Property<int>("LikeCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("likeCount");
b.Property<bool>("LocalOnly")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("localOnly");
b.Property<string>("MastoReplyUserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("mastoReplyUserId");
b.Property<List<Note.MentionedUser>>("MentionedRemoteUsers")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("mentionedRemoteUsers")
.HasDefaultValueSql("'[]'::jsonb");
b.PrimitiveCollection<List<string>>("Mentions")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("mentions")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("name");
b.Property<Dictionary<string, long>>("Reactions")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("reactions")
.HasDefaultValueSql("'{}'::jsonb");
b.Property<short>("RenoteCount")
.ValueGeneratedOnAdd()
.HasColumnType("smallint")
.HasDefaultValue((short)0)
.HasColumnName("renoteCount");
b.Property<string>("RenoteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("renoteId")
.HasComment("The ID of renote target.");
b.Property<string>("RenoteUri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("renoteUri")
.HasComment("The URI of the renote target, if it couldn't be resolved at time of ingestion.");
b.Property<string>("RenoteUserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("renoteUserHost")
.HasComment("[Denormalized]");
b.Property<string>("RenoteUserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("renoteUserId")
.HasComment("[Denormalized]");
b.Property<string>("RepliesCollection")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("repliesCollection");
b.Property<short>("RepliesCount")
.ValueGeneratedOnAdd()
.HasColumnType("smallint")
.HasDefaultValue((short)0)
.HasColumnName("repliesCount");
b.Property<DateTime?>("RepliesFetchedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("repliesFetchedAt");
b.Property<string>("ReplyId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("replyId")
.HasComment("The ID of reply target.");
b.Property<string>("ReplyUri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("replyUri")
.HasComment("The URI of the reply target, if it couldn't be resolved at time of ingestion.");
b.Property<string>("ReplyUserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("replyUserHost")
.HasComment("[Denormalized]");
b.Property<string>("ReplyUserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("replyUserId")
.HasComment("[Denormalized]");
b.Property<int>("Score")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("score");
b.PrimitiveCollection<List<string>>("Tags")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("tags")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("Text")
.HasColumnType("text")
.HasColumnName("text");
b.Property<string>("ThreadId")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("threadId");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the Note.");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri")
.HasComment("The URI of a note. it will be null when the note is local.");
b.Property<string>("Url")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("url")
.HasComment("The human readable url of a note. it will be null when the note is local.");
b.Property<string>("UserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("userHost")
.HasComment("[Denormalized]");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The ID of author.");
b.Property<Note.NoteVisibility>("Visibility")
.HasColumnType("note_visibility_enum")
.HasColumnName("visibility");
b.PrimitiveCollection<List<string>>("VisibleUserIds")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("visibleUserIds")
.HasDefaultValueSql("'{}'::character varying[]");
b.HasKey("Id");
b.HasIndex("AttachedFileTypes");
b.HasIndex("ChannelId");
b.HasIndex("CreatedAt");
b.HasIndex("FileIds");
b.HasIndex("Mentions");
b.HasIndex("RenoteId");
b.HasIndex("RenoteUri");
b.HasIndex("ReplyId");
b.HasIndex("ReplyUri");
b.HasIndex("Tags");
b.HasIndex("ThreadId");
b.HasIndex("Uri")
.IsUnique();
b.HasIndex("Url");
b.HasIndex("UserHost");
b.HasIndex("UserId");
b.HasIndex("Visibility");
b.HasIndex("VisibleUserIds");
b.HasIndex("CreatedAt", "UserId");
b.HasIndex("Id", "UserHost");
b.HasIndex("UserId", "Id");
b.HasIndex(new[] { "CombinedAltText" }, "GIN_TRGM_note_combined_alt_text");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "CombinedAltText" }, "GIN_TRGM_note_combined_alt_text"), "gin");
NpgsqlIndexBuilderExtensions.HasOperators(b.HasIndex(new[] { "CombinedAltText" }, "GIN_TRGM_note_combined_alt_text"), new[] { "gin_trgm_ops" });
b.HasIndex(new[] { "Cw" }, "GIN_TRGM_note_cw");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "Cw" }, "GIN_TRGM_note_cw"), "gin");
NpgsqlIndexBuilderExtensions.HasOperators(b.HasIndex(new[] { "Cw" }, "GIN_TRGM_note_cw"), new[] { "gin_trgm_ops" });
b.HasIndex(new[] { "Text" }, "GIN_TRGM_note_text");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "Text" }, "GIN_TRGM_note_text"), "gin");
NpgsqlIndexBuilderExtensions.HasOperators(b.HasIndex(new[] { "Text" }, "GIN_TRGM_note_text"), new[] { "gin_trgm_ops" });
b.HasIndex(new[] { "Mentions" }, "GIN_note_mentions");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "Mentions" }, "GIN_note_mentions"), "gin");
b.HasIndex(new[] { "Tags" }, "GIN_note_tags");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "Tags" }, "GIN_note_tags"), "gin");
b.HasIndex(new[] { "VisibleUserIds" }, "GIN_note_visibleUserIds");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex(new[] { "VisibleUserIds" }, "GIN_note_visibleUserIds"), "gin");
b.ToTable("note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteBookmark", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the NoteBookmark.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("NoteId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId")
.IsUnique();
b.ToTable("note_bookmark");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteEdit", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Cw")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("cw");
b.PrimitiveCollection<List<string>>("FileIds")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("fileIds")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId")
.HasComment("The ID of note.");
b.Property<string>("Text")
.HasColumnType("text")
.HasColumnName("text");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the Note.");
b.HasKey("Id");
b.HasIndex("NoteId");
b.ToTable("note_edit");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteLike", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("NoteId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId")
.IsUnique();
b.ToTable("note_like");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteReaction", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the NoteReaction.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("Reaction")
.IsRequired()
.HasMaxLength(260)
.HasColumnType("character varying(260)")
.HasColumnName("reaction");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("NoteId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId", "Reaction")
.IsUnique();
b.ToTable("note_reaction");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteThread", b =>
{
b.Property<string>("Id")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("id");
b.Property<DateTime?>("BackfilledAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("backfilledAt");
b.Property<bool?>("IsResolvable")
.HasColumnType("boolean")
.HasColumnName("isResolvable");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri");
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("Uri")
.IsUnique();
b.HasIndex("UserId");
b.ToTable("note_thread");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteThreadMuting", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("ThreadId")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("threadId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("ThreadId");
b.HasIndex("UserId");
b.HasIndex("UserId", "ThreadId")
.IsUnique();
b.ToTable("note_thread_muting");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteUnread", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<bool>("IsMentioned")
.HasColumnType("boolean")
.HasColumnName("isMentioned");
b.Property<bool>("IsSpecified")
.HasColumnType("boolean")
.HasColumnName("isSpecified");
b.Property<string>("NoteChannelId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteChannelId")
.HasComment("[Denormalized]");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("NoteUserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteUserId")
.HasComment("[Denormalized]");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("IsMentioned");
b.HasIndex("IsSpecified");
b.HasIndex("NoteChannelId");
b.HasIndex("NoteId");
b.HasIndex("NoteUserId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId")
.IsUnique();
b.ToTable("note_unread");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteWatching", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the NoteWatching.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId")
.HasComment("The target Note ID.");
b.Property<string>("NoteUserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteUserId")
.HasComment("[Denormalized]");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The watcher ID.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("NoteId");
b.HasIndex("NoteUserId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId")
.IsUnique();
b.ToTable("note_watching");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Notification", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("AppAccessTokenId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("appAccessTokenId");
b.Property<string>("BiteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("biteId");
b.Property<int?>("Choice")
.HasColumnType("integer")
.HasColumnName("choice");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Notification.");
b.Property<string>("CustomBody")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("customBody");
b.Property<string>("CustomHeader")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("customHeader");
b.Property<string>("CustomIcon")
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("customIcon");
b.Property<string>("FollowRequestId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("followRequestId");
b.Property<bool>("IsRead")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isRead")
.HasComment("Whether the notification was read.");
b.Property<long>("MastoId")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("masto_id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MastoId"));
b.Property<string>("NoteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("NotifieeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("notifieeId")
.HasComment("The ID of recipient user of the Notification.");
b.Property<string>("NotifierId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("notifierId")
.HasComment("The ID of sender user of the Notification.");
b.Property<string>("Reaction")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("reaction");
b.Property<Notification.NotificationType>("Type")
.HasColumnType("notification_type_enum")
.HasColumnName("type")
.HasComment("The type of the Notification.");
b.Property<string>("UserGroupInvitationId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userGroupInvitationId");
b.HasKey("Id");
b.HasIndex("AppAccessTokenId");
b.HasIndex("BiteId");
b.HasIndex("CreatedAt");
b.HasIndex("FollowRequestId");
b.HasIndex("IsRead");
b.HasIndex("MastoId");
b.HasIndex("NoteId");
b.HasIndex("NotifieeId");
b.HasIndex("NotifierId");
b.HasIndex("Type");
b.HasIndex("UserGroupInvitationId");
b.ToTable("notification");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.OauthApp", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("ClientId")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("clientId")
.HasComment("The client id of the OAuth application");
b.Property<string>("ClientSecret")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("clientSecret")
.HasComment("The client secret of the OAuth application");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the OAuth application");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the OAuth application");
b.PrimitiveCollection<List<string>>("RedirectUris")
.IsRequired()
.HasColumnType("character varying(512)[]")
.HasColumnName("redirectUris")
.HasComment("The redirect URIs of the OAuth application");
b.PrimitiveCollection<List<string>>("Scopes")
.IsRequired()
.HasColumnType("character varying(64)[]")
.HasColumnName("scopes")
.HasComment("The scopes requested by the OAuth application");
b.Property<string>("Website")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("website")
.HasComment("The website of the OAuth application");
b.HasKey("Id");
b.HasIndex("ClientId")
.IsUnique();
b.ToTable("oauth_app");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.OauthToken", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<bool>("Active")
.HasColumnType("boolean")
.HasColumnName("active")
.HasComment("Whether or not the token has been activated");
b.Property<string>("AppId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("appId");
b.Property<bool>("AutoDetectQuotes")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("autoDetectQuotes")
.HasComment("Whether the backend should automatically detect quote posts coming from this client");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("code")
.HasComment("The auth code for the OAuth token");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the OAuth token");
b.Property<bool>("IsPleroma")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isPleroma")
.HasComment("Whether Pleroma or Akkoma specific behavior should be enabled for this client");
b.Property<DateTime?>("LastActiveDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastActiveDate");
b.Property<string>("RedirectUri")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("redirectUri")
.HasComment("The redirect URI of the OAuth token");
b.PrimitiveCollection<List<string>>("Scopes")
.IsRequired()
.HasColumnType("character varying(64)[]")
.HasColumnName("scopes")
.HasComment("The scopes requested by the OAuth token");
b.Property<bool>("SupportsHtmlFormatting")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("supportsHtmlFormatting")
.HasComment("Whether the client supports HTML inline formatting (bold, italic, strikethrough, ...)");
b.Property<bool>("SupportsInlineMedia")
.HasColumnType("boolean")
.HasColumnName("supportsInlineMedia");
b.Property<string>("Token")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("token")
.HasComment("The OAuth token");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("AppId");
b.HasIndex("Code");
b.HasIndex("Token");
b.HasIndex("UserId");
b.ToTable("oauth_token");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Page", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<bool>("AlignCenter")
.HasColumnType("boolean")
.HasColumnName("alignCenter");
b.Property<string>("Content")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("content")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Page.");
b.Property<string>("EyeCatchingImageId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("eyeCatchingImageId");
b.Property<string>("Font")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("font");
b.Property<bool>("HideTitleWhenPinned")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("hideTitleWhenPinned");
b.Property<bool>("IsPublic")
.HasColumnType("boolean")
.HasColumnName("isPublic");
b.Property<int>("LikedCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("likedCount");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("name");
b.Property<string>("Script")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(16384)
.HasColumnType("character varying(16384)")
.HasColumnName("script")
.HasDefaultValueSql("''::character varying");
b.Property<string>("Summary")
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("summary");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("title");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the Page.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The ID of author.");
b.Property<string>("Variables")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("variables")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<Page.PageVisibility>("Visibility")
.HasColumnType("page_visibility_enum")
.HasColumnName("visibility");
b.PrimitiveCollection<List<string>>("VisibleUserIds")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("visibleUserIds")
.HasDefaultValueSql("'{}'::character varying[]");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("EyeCatchingImageId");
b.HasIndex("Name");
b.HasIndex("UpdatedAt");
b.HasIndex("UserId");
b.HasIndex("VisibleUserIds");
b.HasIndex("UserId", "Name")
.IsUnique();
b.ToTable("page");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PageLike", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("PageId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("pageId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("PageId");
b.HasIndex("UserId");
b.HasIndex("UserId", "PageId")
.IsUnique();
b.ToTable("page_like");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PasswordResetRequest", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("Token")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("token");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("Token")
.IsUnique();
b.HasIndex("UserId");
b.ToTable("password_reset_request");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PluginStoreEntry", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<string>("Data")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("data")
.HasDefaultValueSql("'{}'::jsonb")
.HasComment("The plugin-specific data object");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id");
b.HasIndex("Id");
b.ToTable("plugin_store");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PolicyConfiguration", b =>
{
b.Property<string>("Name")
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Data")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("data")
.HasDefaultValueSql("'{}'::jsonb")
.HasComment("The plugin-specific data object");
b.HasKey("Name");
b.ToTable("policy_configuration");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Poll", b =>
{
b.Property<string>("NoteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.PrimitiveCollection<List<string>>("Choices")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(256)[]")
.HasColumnName("choices")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<DateTime?>("ExpiresAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("expiresAt");
b.Property<bool>("Multiple")
.HasColumnType("boolean")
.HasColumnName("multiple");
b.Property<Note.NoteVisibility>("NoteVisibility")
.HasColumnType("note_visibility_enum")
.HasColumnName("noteVisibility")
.HasComment("[Denormalized]");
b.Property<string>("UserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("userHost")
.HasComment("[Denormalized]");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("[Denormalized]");
b.Property<int?>("VotersCount")
.HasColumnType("integer")
.HasColumnName("votersCount");
b.PrimitiveCollection<List<int>>("Votes")
.IsRequired()
.HasColumnType("integer[]")
.HasColumnName("votes");
b.HasKey("NoteId");
b.HasIndex("UserHost");
b.HasIndex("UserId");
b.ToTable("poll");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PollVote", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<int>("Choice")
.HasColumnType("integer")
.HasColumnName("choice");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the PollVote.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("NoteId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId", "Choice")
.IsUnique();
b.ToTable("poll_vote");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PromoNote", b =>
{
b.Property<string>("NoteId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<DateTime>("ExpiresAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("expiresAt");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("[Denormalized]");
b.HasKey("NoteId");
b.HasIndex("UserId");
b.ToTable("promo_note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PromoRead", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the PromoRead.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("NoteId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId")
.IsUnique();
b.ToTable("promo_read");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PushSubscription", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("AuthSecret")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("auth");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("Endpoint")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("endpoint");
b.Property<string>("OauthTokenId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("oauthTokenId");
b.Property<PushSubscription.PushPolicy>("Policy")
.ValueGeneratedOnAdd()
.HasColumnType("push_subscription_policy_enum")
.HasDefaultValue(PushSubscription.PushPolicy.All)
.HasColumnName("policy");
b.Property<string>("PublicKey")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("publickey");
b.PrimitiveCollection<List<string>>("Types")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(32)[]")
.HasColumnName("types")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("OauthTokenId")
.IsUnique();
b.HasIndex("UserId");
b.ToTable("push_subscription");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RegistrationInvite", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("code");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.HasKey("Id");
b.HasIndex("Code")
.IsUnique();
b.ToTable("registration_invite");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RegistryItem", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the RegistryItem.");
b.Property<string>("Domain")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("domain");
b.Property<string>("Key")
.IsRequired()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("key")
.HasComment("The key of the RegistryItem.");
b.PrimitiveCollection<List<string>>("Scope")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(1024)[]")
.HasColumnName("scope")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the RegistryItem.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.Property<string>("Value")
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("value")
.HasDefaultValueSql("'{}'::jsonb")
.HasComment("The value of the RegistryItem.");
b.HasKey("Id");
b.HasIndex("Domain");
b.HasIndex("Scope");
b.HasIndex("UserId");
b.ToTable("registry_item");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Relay", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Inbox")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("inbox");
b.Property<Relay.RelayStatus>("Status")
.HasColumnType("relay_status_enum")
.HasColumnName("status");
b.HasKey("Id");
b.HasIndex("Inbox")
.IsUnique();
b.ToTable("relay");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RenoteMuting", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Muting.");
b.Property<string>("MuteeId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("muteeId")
.HasComment("The mutee user ID.");
b.Property<string>("MuterId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("muterId")
.HasComment("The muter user ID.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("MuteeId");
b.HasIndex("MuterId");
b.HasIndex("MuterId", "MuteeId")
.IsUnique();
b.ToTable("renote_muting");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Report", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("AssigneeId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("assigneeId");
b.Property<string>("Comment")
.IsRequired()
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("comment");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Report.");
b.Property<bool>("Forwarded")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("forwarded");
b.Property<string>("ReporterHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("reporterHost")
.HasComment("[Denormalized]");
b.Property<string>("ReporterId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("reporterId");
b.Property<bool>("Resolved")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("resolved");
b.Property<string>("TargetUserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("targetUserHost")
.HasComment("[Denormalized]");
b.Property<string>("TargetUserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("targetUserId");
b.HasKey("Id");
b.HasIndex("AssigneeId");
b.HasIndex("CreatedAt");
b.HasIndex("ReporterHost");
b.HasIndex("ReporterId");
b.HasIndex("Resolved");
b.HasIndex("TargetUserHost");
b.HasIndex("TargetUserId");
b.ToTable("report");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Rule", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Description")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("description");
b.Property<int>("Order")
.HasColumnType("integer")
.HasColumnName("order");
b.Property<string>("Text")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("text");
b.HasKey("Id");
b.ToTable("rule");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Session", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<bool>("Active")
.HasColumnType("boolean")
.HasColumnName("active")
.HasComment("Whether or not the token has been activated (i.e. 2fa has been confirmed)");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the OAuth token");
b.Property<DateTime?>("LastActiveDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastActiveDate");
b.Property<string>("Token")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("token")
.HasComment("The authorization token");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("Token");
b.HasIndex("UserId");
b.ToTable("session");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.SwSubscription", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("AuthSecret")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("auth");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("Endpoint")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("endpoint");
b.Property<string>("PublicKey")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("publickey");
b.Property<bool>("SendReadMessage")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("sendReadMessage");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("sw_subscription");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UsedUsername", b =>
{
b.Property<string>("Username")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("username");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.HasKey("Username");
b.ToTable("used_username");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.User", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.PrimitiveCollection<List<string>>("AlsoKnownAs")
.HasColumnType("text[]")
.HasColumnName("alsoKnownAs")
.HasComment("URIs the user is known as too");
b.Property<string>("AvatarBlurhash")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("avatarBlurhash")
.HasComment("The blurhash of the avatar DriveFile");
b.Property<string>("AvatarId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("avatarId")
.HasComment("The ID of avatar DriveFile.");
b.Property<string>("BannerBlurhash")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("bannerBlurhash")
.HasComment("The blurhash of the banner DriveFile");
b.Property<string>("BannerId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("bannerId")
.HasComment("The ID of banner DriveFile.");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the User.");
b.Property<string>("DisplayName")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the User.");
b.Property<int?>("DriveCapacityOverrideMb")
.HasColumnType("integer")
.HasColumnName("driveCapacityOverrideMb")
.HasComment("Overrides user drive capacity limit");
b.PrimitiveCollection<List<string>>("Emojis")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("emojis")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("Featured")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("featured")
.HasComment("The featured URL of the User. It will be null if the origin of the user is local.");
b.Property<int>("FollowersCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("followersCount")
.HasComment("The count of followers.");
b.Property<string>("FollowersUri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("followersUri")
.HasComment("The URI of the user Follower Collection. It will be null if the origin of the user is local.");
b.Property<int>("FollowingCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("followingCount")
.HasComment("The count of following.");
b.Property<string>("Host")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("host")
.HasComment("The host of the User. It will be null if the origin of the user is local.");
b.Property<string>("Inbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("inbox")
.HasComment("The inbox URL of the User. It will be null if the origin of the user is local.");
b.Property<bool>("IsAdmin")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isAdmin")
.HasComment("Whether the User is the admin.");
b.Property<bool>("IsBot")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isBot")
.HasComment("Whether the User is a bot.");
b.Property<bool>("IsCat")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isCat")
.HasComment("Whether the User is a cat.");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isDeleted")
.HasComment("Whether the User is deleted.");
b.Property<bool>("IsExplorable")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("isExplorable")
.HasComment("Whether the User is explorable.");
b.Property<bool>("IsLocked")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isLocked")
.HasComment("Whether the User is locked.");
b.Property<bool>("IsModerator")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isModerator")
.HasComment("Whether the User is a moderator.");
b.Property<bool>("IsRelayActor")
.HasColumnType("boolean")
.HasColumnName("isRelayActor");
b.Property<bool>("IsSilenced")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isSilenced")
.HasComment("Whether the User is silenced.");
b.Property<bool>("IsSuspended")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isSuspended")
.HasComment("Whether the User is suspended.");
b.Property<bool>("IsSystemUser")
.HasColumnType("boolean")
.HasColumnName("isSystem");
b.Property<DateTime?>("LastActiveDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastActiveDate");
b.Property<DateTime?>("LastFetchedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastFetchedAt");
b.Property<DateTime?>("LastNoteAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastNoteAt");
b.Property<string>("MovedToUri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("movedToUri")
.HasComment("The URI of the new account of the User");
b.Property<int>("NotesCount")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValue(0)
.HasColumnName("notesCount")
.HasComment("The count of notes.");
b.Property<string>("Outbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("outbox");
b.Property<DateTime?>("OutboxFetchedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("outboxFetchedAt");
b.Property<string>("SharedInbox")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("sharedInbox")
.HasComment("The sharedInbox URL of the User. It will be null if the origin of the user is local.");
b.Property<bool>("SpeakAsCat")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("speakAsCat")
.HasComment("Whether to speak as a cat if isCat.");
b.Property<bool>("SplitDomainResolved")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("splitDomainResolved");
b.PrimitiveCollection<List<string>>("Tags")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("tags")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("updatedAt")
.HasComment("The updated date of the User.");
b.Property<string>("Uri")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("uri")
.HasComment("The URI of the User. It will be null if the origin of the user is local.");
b.Property<string>("Username")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("username")
.HasComment("The username of the User.");
b.Property<string>("UsernameLower")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("usernameLower")
.HasComment("The username (lowercased) of the User.");
b.HasKey("Id");
b.HasIndex("AvatarId")
.IsUnique();
b.HasIndex("BannerId")
.IsUnique();
b.HasIndex("CreatedAt");
b.HasIndex("Host");
b.HasIndex("IsAdmin");
b.HasIndex("IsExplorable");
b.HasIndex("IsModerator");
b.HasIndex("IsSuspended");
b.HasIndex("LastActiveDate");
b.HasIndex("Tags");
b.HasIndex("UpdatedAt");
b.HasIndex("Uri");
b.HasIndex("UsernameLower");
b.HasIndex("UsernameLower", "Host")
.IsUnique();
b.ToTable("user");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroup", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the UserGroup.");
b.Property<bool>("IsPrivate")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("isPrivate");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)")
.HasColumnName("name");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The ID of owner.");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("UserId");
b.ToTable("user_group");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroupInvitation", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the UserGroupInvitation.");
b.Property<string>("UserGroupId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userGroupId")
.HasComment("The group ID.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The user ID.");
b.HasKey("Id");
b.HasIndex("UserGroupId");
b.HasIndex("UserId");
b.HasIndex("UserId", "UserGroupId")
.IsUnique();
b.ToTable("user_group_invitation");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroupMember", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the UserGroupMember.");
b.Property<string>("UserGroupId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userGroupId")
.HasComment("The group ID.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The user ID.");
b.HasKey("Id");
b.HasIndex("UserGroupId");
b.HasIndex("UserId");
b.HasIndex("UserId", "UserGroupId")
.IsUnique();
b.ToTable("user_group_member");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserKeypair", b =>
{
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.Property<string>("PrivateKey")
.IsRequired()
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("privateKey");
b.Property<string>("PublicKey")
.IsRequired()
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("publicKey");
b.HasKey("UserId");
b.ToTable("user_keypair");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserList", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the UserList.");
b.Property<bool>("HideFromHomeTl")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("hideFromHomeTl")
.HasComment("Whether posts from list members should be hidden from the home timeline.");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the UserList.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("user_list");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserListMember", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the UserListMember.");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The user ID.");
b.Property<string>("UserListId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userListId")
.HasComment("The list ID.");
b.HasKey("Id");
b.HasIndex("UserId");
b.HasIndex("UserListId");
b.HasIndex("UserId", "UserListId")
.IsUnique();
b.ToTable("user_list_member");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserNotePin", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the UserNotePins.");
b.Property<string>("NoteId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("noteId");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("NoteId");
b.HasIndex("UserId");
b.HasIndex("UserId", "NoteId")
.IsUnique();
b.ToTable("user_note_pin");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserPending", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("code");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("email");
b.Property<string>("Password")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("password");
b.Property<string>("Username")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("username");
b.HasKey("Id");
b.HasIndex("Code")
.IsUnique();
b.ToTable("user_pending");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserProfile", b =>
{
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.Property<string>("Birthday")
.HasMaxLength(10)
.HasColumnType("character(10)")
.HasColumnName("birthday")
.IsFixedLength()
.HasComment("The birthday (YYYY-MM-DD) of the User.");
b.Property<string>("Description")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)")
.HasColumnName("description")
.HasComment("The description (bio) of the User.");
b.Property<UserProfile.UserProfileFFVisibility>("FFVisibility")
.ValueGeneratedOnAdd()
.HasColumnType("user_profile_ffvisibility_enum")
.HasDefaultValue(UserProfile.UserProfileFFVisibility.Public)
.HasColumnName("ffVisibility");
b.Property<UserProfile.Field[]>("Fields")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("fields")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<string>("Lang")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("lang");
b.Property<string>("Location")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("location")
.HasComment("The location of the User.");
b.Property<List<Note.MentionedUser>>("Mentions")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("mentions")
.HasDefaultValueSql("'[]'::jsonb");
b.Property<bool>("MentionsResolved")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("mentionsResolved");
b.Property<string>("ModerationNote")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(8192)
.HasColumnType("character varying(8192)")
.HasColumnName("moderationNote")
.HasDefaultValueSql("''::character varying");
b.Property<string>("PinnedPageId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("pinnedPageId");
b.Property<Dictionary<string, string>>("Pronouns")
.HasColumnType("jsonb")
.HasColumnName("pronouns");
b.Property<string>("Url")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("url")
.HasComment("Remote URL of the user.");
b.Property<string>("UserHost")
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("userHost")
.HasComment("[Denormalized]");
b.HasKey("UserId");
b.HasIndex("PinnedPageId")
.IsUnique();
b.HasIndex("UserHost");
b.ToTable("user_profile");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserPublickey", b =>
{
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.Property<string>("KeyId")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("keyId");
b.Property<string>("KeyPem")
.IsRequired()
.HasMaxLength(4096)
.HasColumnType("character varying(4096)")
.HasColumnName("keyPem");
b.HasKey("UserId");
b.HasIndex("KeyId")
.IsUnique();
b.ToTable("user_publickey");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserSecurityKey", b =>
{
b.Property<string>("Id")
.HasColumnType("character varying")
.HasColumnName("id")
.HasComment("Variable-length id given to navigator.credentials.get()");
b.Property<DateTime>("LastUsed")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastUsed")
.HasComment("The date of the last time the UserSecurityKey was successfully validated.");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("character varying(30)")
.HasColumnName("name")
.HasComment("User-defined name for this key");
b.Property<string>("PublicKey")
.IsRequired()
.HasColumnType("character varying")
.HasColumnName("publicKey")
.HasComment("Variable-length public key used to verify attestations (hex-encoded).");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.HasKey("Id");
b.HasIndex("PublicKey");
b.HasIndex("UserId");
b.ToTable("user_security_key");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserSettings", b =>
{
b.Property<string>("UserId")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId");
b.Property<bool>("AlwaysMarkSensitive")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("alwaysMarkNsfw");
b.Property<bool>("AutoAcceptFollowed")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("autoAcceptFollowed");
b.Property<Note.NoteVisibility>("DefaultNoteVisibility")
.ValueGeneratedOnAdd()
.HasColumnType("note_visibility_enum")
.HasDefaultValue(Note.NoteVisibility.Public)
.HasColumnName("defaultNoteVisibility");
b.Property<Note.NoteVisibility>("DefaultRenoteVisibility")
.ValueGeneratedOnAdd()
.HasColumnType("note_visibility_enum")
.HasDefaultValue(Note.NoteVisibility.Public)
.HasColumnName("defaultRenoteVisibility");
b.Property<string>("Email")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("email");
b.Property<bool>("EmailVerified")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("emailVerified");
b.Property<bool>("FilterInaccessible")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("filterInaccessible");
b.Property<string>("Password")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("password");
b.Property<bool>("PrivateMode")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("privateMode");
b.Property<bool>("TwoFactorEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("twoFactorEnabled");
b.Property<string>("TwoFactorSecret")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("twoFactorSecret");
b.Property<string>("TwoFactorTempSecret")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("twoFactorTempSecret");
b.HasKey("UserId");
b.ToTable("user_settings");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Webhook", b =>
{
b.Property<string>("Id")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("id");
b.Property<bool>("Active")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(true)
.HasColumnName("active");
b.Property<DateTime>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("createdAt")
.HasComment("The created date of the Antenna.");
b.Property<DateTime?>("LatestSentAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("latestSentAt");
b.Property<int?>("LatestStatus")
.HasColumnType("integer")
.HasColumnName("latestStatus");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("name")
.HasComment("The name of the Antenna.");
b.PrimitiveCollection<List<string>>("On")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("character varying(128)[]")
.HasColumnName("on")
.HasDefaultValueSql("'{}'::character varying[]");
b.Property<string>("Secret")
.IsRequired()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("secret");
b.Property<string>("Url")
.IsRequired()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("url");
b.Property<string>("UserId")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("userId")
.HasComment("The owner ID.");
b.HasKey("Id");
b.HasIndex("Active");
b.HasIndex("On");
b.HasIndex("UserId");
b.ToTable("webhook");
});
modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("FriendlyName")
.HasColumnType("text");
b.Property<string>("Xml")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("data_protection_keys", (string)null);
});
modelBuilder.Entity("reported_note", b =>
{
b.Property<string>("note_id")
.HasColumnType("character varying(32)");
b.Property<string>("report_id")
.HasColumnType("character varying(32)");
b.HasKey("note_id", "report_id");
b.HasIndex("report_id");
b.ToTable("reported_note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.AnnouncementRead", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Announcement", "Announcement")
.WithMany("AnnouncementReads")
.HasForeignKey("AnnouncementId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("AnnouncementReads")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Announcement");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Antenna", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserGroupMember", "UserGroupMember")
.WithMany("Antennas")
.HasForeignKey("UserGroupMemberId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Antennas")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserList", "UserList")
.WithMany("Antennas")
.HasForeignKey("UserListId")
.OnDelete(DeleteBehavior.Cascade);
b.Navigation("User");
b.Navigation("UserGroupMember");
b.Navigation("UserList");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.AttestationChallenge", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("AttestationChallenges")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Bite", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Bite", "TargetBite")
.WithMany()
.HasForeignKey("TargetBiteId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "TargetNote")
.WithMany()
.HasForeignKey("TargetNoteId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "TargetUser")
.WithMany()
.HasForeignKey("TargetUserId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("TargetBite");
b.Navigation("TargetNote");
b.Navigation("TargetUser");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Blocking", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Blockee")
.WithMany("IncomingBlocks")
.HasForeignKey("BlockeeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Blocker")
.WithMany("OutgoingBlocks")
.HasForeignKey("BlockerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Blockee");
b.Navigation("Blocker");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Channel", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFile", "Banner")
.WithMany("Channels")
.HasForeignKey("BannerId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Channels")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Banner");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ChannelFollowing", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Channel", "Followee")
.WithMany("ChannelFollowings")
.HasForeignKey("FolloweeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Follower")
.WithMany("ChannelFollowings")
.HasForeignKey("FollowerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Followee");
b.Navigation("Follower");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ChannelNotePin", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Channel", "Channel")
.WithMany("ChannelNotePins")
.HasForeignKey("ChannelId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("ChannelNotePins")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Channel");
b.Navigation("Note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Clip", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Clips")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ClipNote", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Clip", "Clip")
.WithMany("ClipNotes")
.HasForeignKey("ClipId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("ClipNotes")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Clip");
b.Navigation("Note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.DriveFile", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFolder", "Folder")
.WithMany("DriveFiles")
.HasForeignKey("FolderId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("DriveFiles")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Folder");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.DriveFolder", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFolder", "Parent")
.WithMany("InverseParent")
.HasForeignKey("ParentId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("DriveFolders")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade);
b.Navigation("Parent");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Filter", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Filters")
.HasForeignKey("user_id")
.OnDelete(DeleteBehavior.Cascade);
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.FollowRequest", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Followee")
.WithMany("IncomingFollowRequests")
.HasForeignKey("FolloweeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Follower")
.WithMany("OutgoingFollowRequests")
.HasForeignKey("FollowerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Followee");
b.Navigation("Follower");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Following", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Followee")
.WithMany("IncomingFollowRelationships")
.HasForeignKey("FolloweeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Follower")
.WithMany("OutgoingFollowRelationships")
.HasForeignKey("FollowerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Followee");
b.Navigation("Follower");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.GalleryLike", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.GalleryPost", "Post")
.WithMany("GalleryLikes")
.HasForeignKey("PostId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("GalleryLikes")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Post");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.GalleryPost", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("GalleryPosts")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Marker", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Markers")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.MessagingMessage", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFile", "File")
.WithMany("MessagingMessages")
.HasForeignKey("FileId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserGroup", "Group")
.WithMany("MessagingMessages")
.HasForeignKey("GroupId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Recipient")
.WithMany("MessagingMessageRecipients")
.HasForeignKey("RecipientId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("MessagingMessageUsers")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("File");
b.Navigation("Group");
b.Navigation("Recipient");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.ModerationLog", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("ModerationLogs")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Muting", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Mutee")
.WithMany("IncomingMutes")
.HasForeignKey("MuteeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Muter")
.WithMany("OutgoingMutes")
.HasForeignKey("MuterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Mutee");
b.Navigation("Muter");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Note", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Channel", "Channel")
.WithMany("Notes")
.HasForeignKey("ChannelId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Renote")
.WithMany("InverseRenote")
.HasForeignKey("RenoteId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Reply")
.WithMany("InverseReply")
.HasForeignKey("ReplyId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.NoteThread", "Thread")
.WithMany("Notes")
.HasForeignKey("ThreadId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Notes")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Channel");
b.Navigation("Renote");
b.Navigation("Reply");
b.Navigation("Thread");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteBookmark", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("NoteBookmarks")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("NoteBookmarks")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteEdit", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("NoteEdits")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteLike", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("NoteLikes")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("NoteLikes")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteReaction", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("NoteReactions")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("NoteReactions")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteThread", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteThreadMuting", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.NoteThread", "Thread")
.WithMany("NoteThreadMutings")
.HasForeignKey("ThreadId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("NoteThreadMutings")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Thread");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteUnread", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("NoteUnreads")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("NoteUnreads")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteWatching", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("NoteWatchings")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("NoteWatchings")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Notification", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Bite", "Bite")
.WithMany()
.HasForeignKey("BiteId");
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.FollowRequest", "FollowRequest")
.WithMany("Notifications")
.HasForeignKey("FollowRequestId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("Notifications")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Notifiee")
.WithMany("NotificationNotifiees")
.HasForeignKey("NotifieeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Notifier")
.WithMany("NotificationNotifiers")
.HasForeignKey("NotifierId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserGroupInvitation", "UserGroupInvitation")
.WithMany("Notifications")
.HasForeignKey("UserGroupInvitationId")
.OnDelete(DeleteBehavior.Cascade);
b.Navigation("Bite");
b.Navigation("FollowRequest");
b.Navigation("Note");
b.Navigation("Notifiee");
b.Navigation("Notifier");
b.Navigation("UserGroupInvitation");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.OauthToken", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.OauthApp", "App")
.WithMany("OauthTokens")
.HasForeignKey("AppId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("OauthTokens")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("App");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Page", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFile", "EyeCatchingImage")
.WithMany("Pages")
.HasForeignKey("EyeCatchingImageId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Pages")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("EyeCatchingImage");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PageLike", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Page", "Page")
.WithMany("PageLikes")
.HasForeignKey("PageId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("PageLikes")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Page");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PasswordResetRequest", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("PasswordResetRequests")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Poll", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithOne("Poll")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.Poll", "NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PollVote", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("PollVotes")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("PollVotes")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PromoNote", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithOne("PromoNote")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.PromoNote", "NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PromoRead", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("PromoReads")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("PromoReads")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.PushSubscription", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.OauthToken", "OauthToken")
.WithOne("PushSubscription")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.PushSubscription", "OauthTokenId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("PushSubscriptions")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("OauthToken");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RegistryItem", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("RegistryItems")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RenoteMuting", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Mutee")
.WithMany("RenoteMutingMutees")
.HasForeignKey("MuteeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Muter")
.WithMany("RenoteMutingMuters")
.HasForeignKey("MuterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Mutee");
b.Navigation("Muter");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Report", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Assignee")
.WithMany("AbuseUserReportAssignees")
.HasForeignKey("AssigneeId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "Reporter")
.WithMany("AbuseUserReportReporters")
.HasForeignKey("ReporterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "TargetUser")
.WithMany("AbuseUserReportTargetUsers")
.HasForeignKey("TargetUserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Assignee");
b.Navigation("Reporter");
b.Navigation("TargetUser");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Session", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Sessions")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.SwSubscription", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("SwSubscriptions")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.User", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFile", "Avatar")
.WithOne("UserAvatar")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.User", "AvatarId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.DriveFile", "Banner")
.WithOne("UserBanner")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.User", "BannerId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Avatar");
b.Navigation("Banner");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroup", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserGroups")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroupInvitation", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserGroup", "UserGroup")
.WithMany("UserGroupInvitations")
.HasForeignKey("UserGroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserGroupInvitations")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
b.Navigation("UserGroup");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroupMember", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserGroup", "UserGroup")
.WithMany("UserGroupMembers")
.HasForeignKey("UserGroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserGroupMemberships")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
b.Navigation("UserGroup");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserKeypair", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithOne("UserKeypair")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.UserKeypair", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserList", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserLists")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserListMember", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserListMembers")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.UserList", "UserList")
.WithMany("UserListMembers")
.HasForeignKey("UserListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
b.Navigation("UserList");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserNotePin", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", "Note")
.WithMany("UserNotePins")
.HasForeignKey("NoteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserNotePins")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Note");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserProfile", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Page", "PinnedPage")
.WithOne("UserProfile")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.UserProfile", "PinnedPageId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithOne("UserProfile")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.UserProfile", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("PinnedPage");
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserPublickey", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithOne("UserPublickey")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.UserPublickey", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserSecurityKey", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("UserSecurityKeys")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserSettings", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithOne("UserSettings")
.HasForeignKey("Iceshrimp.Backend.Core.Database.Tables.UserSettings", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Webhook", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.User", "User")
.WithMany("Webhooks")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("reported_note", b =>
{
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Note", null)
.WithMany()
.HasForeignKey("note_id")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Iceshrimp.Backend.Core.Database.Tables.Report", null)
.WithMany()
.HasForeignKey("report_id")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Announcement", b =>
{
b.Navigation("AnnouncementReads");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Channel", b =>
{
b.Navigation("ChannelFollowings");
b.Navigation("ChannelNotePins");
b.Navigation("Notes");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Clip", b =>
{
b.Navigation("ClipNotes");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.DriveFile", b =>
{
b.Navigation("Channels");
b.Navigation("MessagingMessages");
b.Navigation("Pages");
b.Navigation("UserAvatar");
b.Navigation("UserBanner");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.DriveFolder", b =>
{
b.Navigation("DriveFiles");
b.Navigation("InverseParent");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.FollowRequest", b =>
{
b.Navigation("Notifications");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.GalleryPost", b =>
{
b.Navigation("GalleryLikes");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Note", b =>
{
b.Navigation("ChannelNotePins");
b.Navigation("ClipNotes");
b.Navigation("InverseRenote");
b.Navigation("InverseReply");
b.Navigation("NoteBookmarks");
b.Navigation("NoteEdits");
b.Navigation("NoteLikes");
b.Navigation("NoteReactions");
b.Navigation("NoteUnreads");
b.Navigation("NoteWatchings");
b.Navigation("Notifications");
b.Navigation("Poll");
b.Navigation("PollVotes");
b.Navigation("PromoNote");
b.Navigation("PromoReads");
b.Navigation("UserNotePins");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.NoteThread", b =>
{
b.Navigation("NoteThreadMutings");
b.Navigation("Notes");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.OauthApp", b =>
{
b.Navigation("OauthTokens");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.OauthToken", b =>
{
b.Navigation("PushSubscription");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Page", b =>
{
b.Navigation("PageLikes");
b.Navigation("UserProfile");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.User", b =>
{
b.Navigation("AbuseUserReportAssignees");
b.Navigation("AbuseUserReportReporters");
b.Navigation("AbuseUserReportTargetUsers");
b.Navigation("AnnouncementReads");
b.Navigation("Antennas");
b.Navigation("AttestationChallenges");
b.Navigation("ChannelFollowings");
b.Navigation("Channels");
b.Navigation("Clips");
b.Navigation("DriveFiles");
b.Navigation("DriveFolders");
b.Navigation("Filters");
b.Navigation("GalleryLikes");
b.Navigation("GalleryPosts");
b.Navigation("IncomingBlocks");
b.Navigation("IncomingFollowRelationships");
b.Navigation("IncomingFollowRequests");
b.Navigation("IncomingMutes");
b.Navigation("Markers");
b.Navigation("MessagingMessageRecipients");
b.Navigation("MessagingMessageUsers");
b.Navigation("ModerationLogs");
b.Navigation("NoteBookmarks");
b.Navigation("NoteLikes");
b.Navigation("NoteReactions");
b.Navigation("NoteThreadMutings");
b.Navigation("NoteUnreads");
b.Navigation("NoteWatchings");
b.Navigation("Notes");
b.Navigation("NotificationNotifiees");
b.Navigation("NotificationNotifiers");
b.Navigation("OauthTokens");
b.Navigation("OutgoingBlocks");
b.Navigation("OutgoingFollowRelationships");
b.Navigation("OutgoingFollowRequests");
b.Navigation("OutgoingMutes");
b.Navigation("PageLikes");
b.Navigation("Pages");
b.Navigation("PasswordResetRequests");
b.Navigation("PollVotes");
b.Navigation("PromoReads");
b.Navigation("PushSubscriptions");
b.Navigation("RegistryItems");
b.Navigation("RenoteMutingMutees");
b.Navigation("RenoteMutingMuters");
b.Navigation("Sessions");
b.Navigation("SwSubscriptions");
b.Navigation("UserGroupInvitations");
b.Navigation("UserGroupMemberships");
b.Navigation("UserGroups");
b.Navigation("UserKeypair");
b.Navigation("UserListMembers");
b.Navigation("UserLists");
b.Navigation("UserNotePins");
b.Navigation("UserProfile");
b.Navigation("UserPublickey");
b.Navigation("UserSecurityKeys");
b.Navigation("UserSettings");
b.Navigation("Webhooks");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroup", b =>
{
b.Navigation("MessagingMessages");
b.Navigation("UserGroupInvitations");
b.Navigation("UserGroupMembers");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroupInvitation", b =>
{
b.Navigation("Notifications");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserGroupMember", b =>
{
b.Navigation("Antennas");
});
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.UserList", b =>
{
b.Navigation("Antennas");
b.Navigation("UserListMembers");
});
#pragma warning restore 612, 618
}
}
}