From f1a1ed90398a27142a63a137cfa9796ca6ad6b62 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sun, 23 Mar 2025 12:24:53 +0100 Subject: [PATCH] [backend/api] Rename recommended timeline to bubble timeline for improved clarity --- .../Controllers/Web/TimelineController.cs | 6 +-- .../Core/Database/DatabaseContext.cs | 2 +- .../DatabaseContextModelSnapshot.cs | 24 +++++----- ...0250323112015_RenameBubbleInstanceTable.cs | 47 +++++++++++++++++++ .../Database/Tables/RecommendedInstance.cs | 4 +- .../TimelineControllerModel.cs | 4 +- 6 files changed, 67 insertions(+), 20 deletions(-) create mode 100644 Iceshrimp.Backend/Core/Database/Migrations/v2025.1-beta6/20250323112015_RenameBubbleInstanceTable.cs diff --git a/Iceshrimp.Backend/Controllers/Web/TimelineController.cs b/Iceshrimp.Backend/Controllers/Web/TimelineController.cs index 6e982cde..399edf51 100644 --- a/Iceshrimp.Backend/Controllers/Web/TimelineController.cs +++ b/Iceshrimp.Backend/Controllers/Web/TimelineController.cs @@ -80,13 +80,13 @@ public class TimelineController(DatabaseContext db, NoteRenderer noteRenderer, C Filter.FilterContext.Public); } - [HttpGet("recommended")] + [HttpGet("bubble")] [ProducesResults(HttpStatusCode.OK)] - public async Task> GetRecommendedTimeline(PaginationQuery pq) + public async Task> GetBubbleTimeline(PaginationQuery pq) { var user = HttpContext.GetUserOrFail(); var notes = await db.Notes.IncludeCommonProperties() - .Where(p => db.RecommendedInstances.Any(i => i.Host == p.UserHost)) + .Where(p => db.BubbleInstances.Any(i => i.Host == p.UserHost)) .EnsureVisibleFor(user) .FilterHidden(user, db, filterHiddenListMembers: true) .FilterMutedThreads(user, db) diff --git a/Iceshrimp.Backend/Core/Database/DatabaseContext.cs b/Iceshrimp.Backend/Core/Database/DatabaseContext.cs index 6f3e767c..ddf66d50 100644 --- a/Iceshrimp.Backend/Core/Database/DatabaseContext.cs +++ b/Iceshrimp.Backend/Core/Database/DatabaseContext.cs @@ -92,7 +92,7 @@ public class DatabaseContext(DbContextOptions options) public virtual DbSet Filters { get; init; } = null!; public virtual DbSet PluginStore { get; init; } = null!; public virtual DbSet PolicyConfiguration { get; init; } = null!; - public virtual DbSet RecommendedInstances { get; init; } = null!; + public virtual DbSet BubbleInstances { get; init; } = null!; public virtual DbSet DataProtectionKeys { get; init; } = null!; public static NpgsqlDataSource GetDataSource(Config.DatabaseSection config) diff --git a/Iceshrimp.Backend/Core/Database/Migrations/DatabaseContextModelSnapshot.cs b/Iceshrimp.Backend/Core/Database/Migrations/DatabaseContextModelSnapshot.cs index 1665f3bf..b624475c 100644 --- a/Iceshrimp.Backend/Core/Database/Migrations/DatabaseContextModelSnapshot.cs +++ b/Iceshrimp.Backend/Core/Database/Migrations/DatabaseContextModelSnapshot.cs @@ -409,6 +409,18 @@ namespace Iceshrimp.Backend.Core.Database.Migrations b.ToTable("blocking"); }); + modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.BubbleInstance", b => + { + b.Property("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("Key") @@ -3651,18 +3663,6 @@ namespace Iceshrimp.Backend.Core.Database.Migrations b.ToTable("push_subscription"); }); - modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RecommendedInstance", b => - { - b.Property("Host") - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("host"); - - b.HasKey("Host"); - - b.ToTable("recommended_instance"); - }); - modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.RegistrationInvite", b => { b.Property("Id") diff --git a/Iceshrimp.Backend/Core/Database/Migrations/v2025.1-beta6/20250323112015_RenameBubbleInstanceTable.cs b/Iceshrimp.Backend/Core/Database/Migrations/v2025.1-beta6/20250323112015_RenameBubbleInstanceTable.cs new file mode 100644 index 00000000..63bf3baa --- /dev/null +++ b/Iceshrimp.Backend/Core/Database/Migrations/v2025.1-beta6/20250323112015_RenameBubbleInstanceTable.cs @@ -0,0 +1,47 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Infrastructure; + +#nullable disable + +namespace Iceshrimp.Backend.Core.Database.Migrations +{ + /// + [DbContext(typeof(DatabaseContext))] + [Migration("20250323112015_RenameBubbleInstanceTable")] + public partial class RenameBubbleInstanceTable : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropPrimaryKey( + name: "PK_recommended_instance", + table: "recommended_instance"); + + migrationBuilder.RenameTable( + name: "recommended_instance", + newName: "bubble_instance"); + + migrationBuilder.AddPrimaryKey( + name: "PK_bubble_instance", + table: "bubble_instance", + column: "host"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropPrimaryKey( + name: "PK_bubble_instance", + table: "bubble_instance"); + + migrationBuilder.RenameTable( + name: "bubble_instance", + newName: "recommended_instance"); + + migrationBuilder.AddPrimaryKey( + name: "PK_recommended_instance", + table: "recommended_instance", + column: "host"); + } + } +} diff --git a/Iceshrimp.Backend/Core/Database/Tables/RecommendedInstance.cs b/Iceshrimp.Backend/Core/Database/Tables/RecommendedInstance.cs index d5d16464..be39c61e 100644 --- a/Iceshrimp.Backend/Core/Database/Tables/RecommendedInstance.cs +++ b/Iceshrimp.Backend/Core/Database/Tables/RecommendedInstance.cs @@ -3,8 +3,8 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Iceshrimp.Backend.Core.Database.Tables; -[Table("recommended_instance")] -public class RecommendedInstance +[Table("bubble_instance")] +public class BubbleInstance { [Key] [Column("host")] diff --git a/Iceshrimp.Frontend/Core/ControllerModels/TimelineControllerModel.cs b/Iceshrimp.Frontend/Core/ControllerModels/TimelineControllerModel.cs index 8e5229d4..ddd726f0 100644 --- a/Iceshrimp.Frontend/Core/ControllerModels/TimelineControllerModel.cs +++ b/Iceshrimp.Frontend/Core/ControllerModels/TimelineControllerModel.cs @@ -19,8 +19,8 @@ internal class TimelineControllerModel(ApiClient api) api.CallAsync>(HttpMethod.Get, "/timelines/social", pq); [LinkPagination(20, 80)] - public Task> GetRecommendedTimelineAsync(PaginationQuery pq) => - api.CallAsync>(HttpMethod.Get, "/timelines/recommended", pq); + public Task> GetBubbleTimelineAsync(PaginationQuery pq) => + api.CallAsync>(HttpMethod.Get, "/timelines/bubble", pq); [LinkPagination(20, 80)] public Task> GetGlobalTimelineAsync(PaginationQuery pq) =>