a fork of iceshrimp.net but a tweaked frontend to my personal liking. waow
fediverse social-media social iceshrimp fedi
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

[backend/database] Add User.CanBite and bite_control_enum

pancakes 6e3a82f0 8f277777

+109 -1
+3
Iceshrimp.Backend/Core/Database/DatabaseContext.cs
··· 136 136 dataSourceBuilder.MapEnum<Filter.FilterContext>(); 137 137 dataSourceBuilder.MapEnum<Filter.FilterAction>(); 138 138 dataSourceBuilder.MapEnum<InteractionStamp.InteractionStampType>(); 139 + dataSourceBuilder.MapEnum<User.BiteControl>(); 139 140 140 141 dataSourceBuilder.EnableDynamicJson(); 141 142 ··· 163 164 options.MapEnum<Filter.FilterContext>("filter_context_enum"); 164 165 options.MapEnum<Filter.FilterAction>("filter_action_enum"); 165 166 options.MapEnum<InteractionStamp.InteractionStampType>("interaction_stamp_type"); 167 + options.MapEnum<User.BiteControl>("bite_control_enum"); 166 168 }); 167 169 168 170 optionsBuilder.UseProjectables(options => { options.CompatibilityMode(CompatibilityMode.Full); }); ··· 187 189 .HasPostgresEnum<Filter.FilterContext>() 188 190 .HasPostgresEnum<Filter.FilterAction>() 189 191 .HasPostgresEnum<InteractionStamp.InteractionStampType>() 192 + .HasPostgresEnum<User.BiteControl>() 190 193 .HasPostgresExtension("pg_trgm"); 191 194 192 195 modelBuilder
+6 -1
Iceshrimp.Backend/Core/Database/Migrations/DatabaseContextModelSnapshot.cs
··· 19 19 { 20 20 #pragma warning disable 612, 618 21 21 modelBuilder 22 - .HasAnnotation("ProductVersion", "10.0.0") 22 + .HasAnnotation("ProductVersion", "10.0.2") 23 23 .HasAnnotation("Relational:MaxIdentifierLength", 63); 24 24 25 25 NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "antenna_src_enum", new[] { "home", "all", "users", "list", "group", "instances" }); 26 + NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "bite_control_enum", new[] { "public", "followers" }); 26 27 NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "filter_action_enum", new[] { "warn", "hide" }); 27 28 NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "filter_context_enum", new[] { "home", "lists", "threads", "notifications", "accounts", "public" }); 28 29 NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "interaction_stamp_type", new[] { "quote" }); ··· 4158 4159 .HasColumnType("character varying(32)") 4159 4160 .HasColumnName("bannerId") 4160 4161 .HasComment("The ID of banner DriveFile."); 4162 + 4163 + b.Property<User.BiteControl?>("CanBite") 4164 + .HasColumnType("bite_control_enum") 4165 + .HasColumnName("canBite"); 4161 4166 4162 4167 b.Property<DateTime>("CreatedAt") 4163 4168 .HasColumnType("timestamp with time zone")
+90
Iceshrimp.Backend/Core/Database/Migrations/v2025.1-beta6/20260204102153_AddBiteControls.cs
··· 1 + using Iceshrimp.Backend.Core.Database.Tables; 2 + using Microsoft.EntityFrameworkCore.Infrastructure; 3 + using Microsoft.EntityFrameworkCore.Migrations; 4 + 5 + #nullable disable 6 + 7 + namespace Iceshrimp.Backend.Core.Database.Migrations.v2025._1beta6 8 + { 9 + /// <inheritdoc /> 10 + [DbContext(typeof(DatabaseContext))] 11 + [Migration("20260204102153_AddBiteControls")] 12 + public partial class AddBiteControls : Migration 13 + { 14 + /// <inheritdoc /> 15 + protected override void Up(MigrationBuilder migrationBuilder) 16 + { 17 + migrationBuilder.AlterDatabase() 18 + .Annotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") 19 + .Annotation("Npgsql:Enum:bite_control_enum", "public,followers") 20 + .Annotation("Npgsql:Enum:filter_action_enum", "warn,hide") 21 + .Annotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public") 22 + .Annotation("Npgsql:Enum:interaction_stamp_type", "quote") 23 + .Annotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed") 24 + .Annotation("Npgsql:Enum:marker_type_enum", "home,notifications") 25 + .Annotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") 26 + .Annotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite,report") 27 + .Annotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") 28 + .Annotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") 29 + .Annotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") 30 + .Annotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") 31 + .Annotation("Npgsql:PostgresExtension:pg_trgm", ",,") 32 + .OldAnnotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") 33 + .OldAnnotation("Npgsql:Enum:filter_action_enum", "warn,hide") 34 + .OldAnnotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public") 35 + .OldAnnotation("Npgsql:Enum:interaction_stamp_type", "quote") 36 + .OldAnnotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed") 37 + .OldAnnotation("Npgsql:Enum:marker_type_enum", "home,notifications") 38 + .OldAnnotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") 39 + .OldAnnotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite,report") 40 + .OldAnnotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") 41 + .OldAnnotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") 42 + .OldAnnotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") 43 + .OldAnnotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") 44 + .OldAnnotation("Npgsql:PostgresExtension:pg_trgm", ",,"); 45 + 46 + migrationBuilder.AddColumn<User.BiteControl>( 47 + name: "canBite", 48 + table: "user", 49 + type: "bite_control_enum", 50 + nullable: true); 51 + } 52 + 53 + /// <inheritdoc /> 54 + protected override void Down(MigrationBuilder migrationBuilder) 55 + { 56 + migrationBuilder.DropColumn( 57 + name: "canBite", 58 + table: "user"); 59 + 60 + migrationBuilder.AlterDatabase() 61 + .Annotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") 62 + .Annotation("Npgsql:Enum:filter_action_enum", "warn,hide") 63 + .Annotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public") 64 + .Annotation("Npgsql:Enum:interaction_stamp_type", "quote") 65 + .Annotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed") 66 + .Annotation("Npgsql:Enum:marker_type_enum", "home,notifications") 67 + .Annotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") 68 + .Annotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite,report") 69 + .Annotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") 70 + .Annotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") 71 + .Annotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") 72 + .Annotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") 73 + .Annotation("Npgsql:PostgresExtension:pg_trgm", ",,") 74 + .OldAnnotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") 75 + .OldAnnotation("Npgsql:Enum:bite_control_enum", "public,followers") 76 + .OldAnnotation("Npgsql:Enum:filter_action_enum", "warn,hide") 77 + .OldAnnotation("Npgsql:Enum:filter_context_enum", "home,lists,threads,notifications,accounts,public") 78 + .OldAnnotation("Npgsql:Enum:interaction_stamp_type", "quote") 79 + .OldAnnotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed") 80 + .OldAnnotation("Npgsql:Enum:marker_type_enum", "home,notifications") 81 + .OldAnnotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") 82 + .OldAnnotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite,report") 83 + .OldAnnotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") 84 + .OldAnnotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") 85 + .OldAnnotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") 86 + .OldAnnotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") 87 + .OldAnnotation("Npgsql:PostgresExtension:pg_trgm", ",,"); 88 + } 89 + } 90 + }
+10
Iceshrimp.Backend/Core/Database/Tables/User.cs
··· 6 6 using Iceshrimp.Shared.Helpers; 7 7 using Microsoft.EntityFrameworkCore; 8 8 using Microsoft.EntityFrameworkCore.Metadata.Builders; 9 + using NpgsqlTypes; 9 10 10 11 namespace Iceshrimp.Backend.Core.Database.Tables; 11 12 ··· 203 204 /// </summary> 204 205 [Column("isExplorable")] 205 206 public bool IsExplorable { get; set; } 207 + 208 + [Column("canBite")] public BiteControl? CanBite { get; set; } 206 209 207 210 /// <summary> 208 211 /// The URI of the user Follower Collection. It will be null if the origin of the user is local. ··· 644 647 645 648 public string? GetBannerUrl(Config.InstanceSection config) 646 649 => BannerId != null ? $"https://{config.WebDomain}/banners/{Id}/{BannerId}" : null; 650 + 651 + [PgName("bite_control_enum")] 652 + public enum BiteControl 653 + { 654 + [PgName("public")] Public = 0, 655 + [PgName("followers")] Followers = 1 656 + } 647 657 648 658 private class EntityTypeConfiguration : IEntityTypeConfiguration<User> 649 659 {