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

View file

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

View file

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

View file

@ -28,7 +28,7 @@ public class MiscController(DatabaseContext db, NoteRenderer noteRenderer) : Con
{
var user = HttpContext.GetUserOrFail();
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)
.FilterHidden(user, db, false, false)
.Paginate(pq, ControllerContext)

View file

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

View file

@ -201,7 +201,7 @@ public class Note : IEntity
[StringLength(256)]
public string? ThreadId { get; set; }
[NotMapped] public string ThreadIdOrId => ThreadId ?? Id;
[Projectable] [NotMapped] public string ThreadIdOrId => ThreadId ?? Id;
/// <summary>
/// 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)
{
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(
@ -361,7 +361,7 @@ public static class QueryableExtensions
)
{
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(

View file

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