[backend/database] Migrate references to Note.ThreadId ?? Note.Id to Note.ThreadIdOrId

This commit is contained in:
Laura Hausmann 2024-07-14 22:06:01 +02:00
parent 6b6bb53668
commit 1e8f1cb964
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
8 changed files with 14 additions and 14 deletions

View file

@ -42,10 +42,10 @@ public class ConversationsController(
.IncludeCommonProperties() .IncludeCommonProperties()
.FilterHiddenConversations(user, db) .FilterHiddenConversations(user, db)
.FilterMutedThreads(user, db) .FilterMutedThreads(user, db)
.Paginate(p => p.ThreadId ?? p.Id, pq, ControllerContext) .Paginate(p => p.ThreadIdOrId, pq, ControllerContext)
.Select(p => new Conversation .Select(p => new Conversation
{ {
Id = p.ThreadId ?? p.Id, Id = p.ThreadIdOrId,
LastNote = p, LastNote = p,
UserIds = p.VisibleUserIds, UserIds = p.VisibleUserIds,
Unread = db.Notifications.Any(n => n.Note == p && Unread = db.Notifications.Any(n => n.Note == p &&
@ -96,10 +96,10 @@ public class ConversationsController(
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var conversation = await db.Conversations(user) var conversation = await db.Conversations(user)
.IncludeCommonProperties() .IncludeCommonProperties()
.Where(p => (p.ThreadId ?? p.Id) == id) .Where(p => (p.ThreadIdOrId) == id)
.Select(p => new Conversation .Select(p => new Conversation
{ {
Id = p.ThreadId ?? p.Id, Id = p.ThreadIdOrId,
LastNote = p, LastNote = p,
UserIds = p.VisibleUserIds, UserIds = p.VisibleUserIds,
Unread = db.Notifications.Any(n => n.Note == p && Unread = db.Notifications.Any(n => n.Note == p &&

View file

@ -627,7 +627,7 @@ public class StatusController(
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var target = await db.Notes.Where(p => p.Id == id) var target = await db.Notes.Where(p => p.Id == id)
.EnsureVisibleFor(user) .EnsureVisibleFor(user)
.Select(p => p.ThreadId ?? p.Id) .Select(p => p.ThreadIdOrId)
.FirstOrDefaultAsync() ?? .FirstOrDefaultAsync() ??
throw GracefulException.RecordNotFound(); throw GracefulException.RecordNotFound();
@ -652,7 +652,7 @@ public class StatusController(
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var target = await db.Notes.Where(p => p.Id == id) var target = await db.Notes.Where(p => p.Id == id)
.EnsureVisibleFor(user) .EnsureVisibleFor(user)
.Select(p => p.ThreadId ?? p.Id) .Select(p => p.ThreadIdOrId)
.FirstOrDefaultAsync() ?? .FirstOrDefaultAsync() ??
throw GracefulException.RecordNotFound(); throw GracefulException.RecordNotFound();

View file

@ -91,7 +91,7 @@ public class DirectChannel(WebSocketConnection connection) : IChannel
return new ConversationEntity return new ConversationEntity
{ {
Accounts = accounts.ToList(), Accounts = accounts.ToList(),
Id = note.ThreadId ?? note.Id, Id = note.ThreadIdOrId,
LastStatus = rendered, LastStatus = rendered,
Unread = true Unread = true
}; };

View file

@ -28,7 +28,7 @@ public class MiscController(DatabaseContext db, NoteRenderer noteRenderer) : Con
{ {
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var notes = await db.Notes.IncludeCommonProperties() var notes = await db.Notes.IncludeCommonProperties()
.Where(p => db.NoteThreadMutings.Any(m => m.ThreadId == (p.ThreadId ?? p.Id))) .Where(p => db.NoteThreadMutings.Any(m => m.ThreadId == p.ThreadIdOrId))
.EnsureVisibleFor(user) .EnsureVisibleFor(user)
.FilterHidden(user, db, false, false) .FilterHidden(user, db, false, false)
.Paginate(pq, ControllerContext) .Paginate(pq, ControllerContext)

View file

@ -347,7 +347,7 @@ public class NoteController(
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var target = await db.Notes.Where(p => p.Id == id) var target = await db.Notes.Where(p => p.Id == id)
.EnsureVisibleFor(user) .EnsureVisibleFor(user)
.Select(p => p.ThreadId ?? p.Id) .Select(p => p.ThreadIdOrId)
.FirstOrDefaultAsync() ?? .FirstOrDefaultAsync() ??
throw GracefulException.NotFound("Note not found"); throw GracefulException.NotFound("Note not found");
@ -373,7 +373,7 @@ public class NoteController(
var user = HttpContext.GetUserOrFail(); var user = HttpContext.GetUserOrFail();
var target = await db.Notes.Where(p => p.Id == id) var target = await db.Notes.Where(p => p.Id == id)
.EnsureVisibleFor(user) .EnsureVisibleFor(user)
.Select(p => p.ThreadId ?? p.Id) .Select(p => p.ThreadIdOrId)
.FirstOrDefaultAsync() ?? .FirstOrDefaultAsync() ??
throw GracefulException.NotFound("Note not found"); throw GracefulException.NotFound("Note not found");

View file

@ -201,7 +201,7 @@ public class Note : IEntity
[StringLength(256)] [StringLength(256)]
public string? ThreadId { get; set; } public string? ThreadId { get; set; }
[NotMapped] public string ThreadIdOrId => ThreadId ?? Id; [Projectable] [NotMapped] public string ThreadIdOrId => ThreadId ?? Id;
/// <summary> /// <summary>
/// The updated date of the Note. /// The updated date of the Note.

View file

@ -353,7 +353,7 @@ public static class QueryableExtensions
public static IQueryable<Note> FilterMutedThreads(this IQueryable<Note> query, User user, DatabaseContext db) public static IQueryable<Note> FilterMutedThreads(this IQueryable<Note> query, User user, DatabaseContext db)
{ {
return query.Where(p => !db.NoteThreadMutings.Any(m => m.User == user && m.ThreadId == (p.ThreadId ?? p.Id))); return query.Where(p => !db.NoteThreadMutings.Any(m => m.User == user && m.ThreadId == p.ThreadIdOrId));
} }
public static IQueryable<Notification> FilterMutedThreads( public static IQueryable<Notification> FilterMutedThreads(
@ -361,7 +361,7 @@ public static class QueryableExtensions
) )
{ {
return query.Where(p => p.Note == null || return query.Where(p => p.Note == null ||
!db.NoteThreadMutings.Any(m => m.User == user && m.ThreadId == (p.Note.ThreadId ?? p.Note.Id))); !db.NoteThreadMutings.Any(m => m.User == user && m.ThreadId == p.Note.ThreadIdOrId));
} }
private static (IQueryable<string> hidden, IQueryable<string>? mentionsHidden) FilterHiddenInternal( private static (IQueryable<string> hidden, IQueryable<string>? mentionsHidden) FilterHiddenInternal(

View file

@ -214,7 +214,7 @@ public class NoteService(
Mentions = mentionedUserIds, Mentions = mentionedUserIds,
VisibleUserIds = visibleUserIds, VisibleUserIds = visibleUserIds,
MentionedRemoteUsers = remoteMentions, MentionedRemoteUsers = remoteMentions,
ThreadId = reply?.ThreadId ?? reply?.Id, ThreadId = reply?.ThreadIdOrId,
Tags = tags, Tags = tags,
LocalOnly = localOnly, LocalOnly = localOnly,
Emojis = emoji ?? [], Emojis = emoji ?? [],