diff --git a/packages/backend/src/models/repositories/note.ts b/packages/backend/src/models/repositories/note.ts index f014f897d7..a1923d0168 100644 --- a/packages/backend/src/models/repositories/note.ts +++ b/packages/backend/src/models/repositories/note.ts @@ -137,8 +137,7 @@ export const NoteRepository = db.getRepository(Note).extend({ Users.findOneByOrFail({ id: meId }), ); - if (!user.host) { - // user is local + if (Users.isLocalUser(user)) { const cache = await LocalFollowingsCache.init(meId); return await cache.isFollowing(note.userId); } @@ -169,6 +168,7 @@ export const NoteRepository = db.getRepository(Note).extend({ me?: { id: User["id"] } | null | undefined, options?: { detail?: boolean; + scyllaNote?: boolean; _hint_?: { myReactions: Map; }; @@ -187,7 +187,7 @@ export const NoteRepository = db.getRepository(Note).extend({ const isSrcNote = typeof src === "object"; // Always lookup from ScyllaDB if enabled - if (isSrcNote && !scyllaClient) { + if (isSrcNote && (!scyllaClient || options?.scyllaNote)) { note = src; } else { const noteId = isSrcNote ? src.id : src; @@ -346,6 +346,7 @@ export const NoteRepository = db.getRepository(Note).extend({ me?: { id: User["id"] } | null | undefined, options?: { detail?: boolean; + scyllaNote?: boolean; }, ) { if (notes.length === 0) return []; diff --git a/packages/backend/src/server/api/common/getters.ts b/packages/backend/src/server/api/common/getters.ts index 97b3635b00..d15d94b03c 100644 --- a/packages/backend/src/server/api/common/getters.ts +++ b/packages/backend/src/server/api/common/getters.ts @@ -16,7 +16,7 @@ import { export async function getNote( noteId: Note["id"], me: { id: User["id"] } | null, - followingIds?: User["id"][] + followingIds?: User["id"][], ) { let note: Note | null = null; if (scyllaClient) { @@ -32,7 +32,10 @@ export async function getNote( note = filtered[0]; } } - } else { + } + + // Fallback to Postgres + if (!note) { const query = Notes.createQueryBuilder("note").where("note.id = :id", { id: noteId, }); diff --git a/packages/backend/src/server/api/endpoints/notes/renotes.ts b/packages/backend/src/server/api/endpoints/notes/renotes.ts index 6dcad3ef8e..64673d1c70 100644 --- a/packages/backend/src/server/api/endpoints/notes/renotes.ts +++ b/packages/backend/src/server/api/endpoints/notes/renotes.ts @@ -67,7 +67,9 @@ export default define(meta, paramDef, async (ps, user) => { }; const foundNotes = await execTimelineQuery(ps, filter); - return await Notes.packMany(foundNotes.slice(0, ps.limit), user); + return await Notes.packMany(foundNotes.slice(0, ps.limit), user, { + scyllaNote: true, + }); } const query = makePaginationQuery( diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index c355d76803..93d868684a 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -90,7 +90,9 @@ export default define(meta, paramDef, async (ps, user) => { }; const foundNotes = await execTimelineQuery(ps, filter); - return await Notes.packMany(foundNotes.slice(0, ps.limit), user); + return await Notes.packMany(foundNotes.slice(0, ps.limit), user, { + scyllaNote: true, + }); } const hasFollowing = await followingsCache.hasFollowing();