refactor(database): ♻️ Move Note <-> Media relations to a many-to-many model instead of one-to-many

This commit is contained in:
Jesse Wierzbinski 2025-01-23 20:36:09 +01:00
parent 9c30dacda7
commit 3216fc339a
No known key found for this signature in database
7 changed files with 2428 additions and 31 deletions

View file

@ -17,7 +17,7 @@ import type {
import { Instance, db } from "@versia/kit/db";
import {
EmojiToNote,
Medias,
MediasToNotes,
NoteToMentions,
Notes,
Users,
@ -630,22 +630,15 @@ export class Note extends BaseInterface<typeof Notes, NoteTypeWithRelations> {
// Remove old attachments
await db
.update(Medias)
.set({
noteId: null,
})
.where(eq(Medias.noteId, this.data.id));
await db
.update(Medias)
.set({
.delete(MediasToNotes)
.where(eq(MediasToNotes.noteId, this.data.id));
await db.insert(MediasToNotes).values(
mediaAttachments.map((media) => ({
noteId: this.data.id,
})
.where(
inArray(
Medias.id,
mediaAttachments.map((i) => i.id),
),
);
mediaId: media.id,
})),
);
}
/**