[backend/database] Migrate references to Note.ThreadId ?? Note.Id to Note.ThreadIdOrId
This commit is contained in:
parent
6b6bb53668
commit
1e8f1cb964
8 changed files with 14 additions and 14 deletions
|
@ -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 &&
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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 ?? [],
|
||||||
|
|
Loading…
Add table
Reference in a new issue