import { db } from "@/db/postgre.js"; import { NoteFavorite } from "@/models/entities/note-favorite.js"; import { Notes } from "../index.js"; import type { User } from "@/models/entities/user.js"; export const NoteFavoriteRepository = db.getRepository(NoteFavorite).extend({ async pack( src: NoteFavorite["id"] | NoteFavorite, me?: { id: User["id"] } | null | undefined, ) { const favorite = typeof src === "object" ? src : await this.findOneByOrFail({ id: src }); return { id: favorite.id, createdAt: favorite.createdAt.toISOString(), noteId: favorite.noteId, // may throw error note: await Notes.pack(favorite.note || favorite.noteId, me), }; }, packMany(favorites: any[], me: { id: User["id"] }) { return Promise.allSettled(favorites.map((x) => this.pack(x, me))).then( (promises) => promises.flatMap((result) => result.status === "fulfilled" ? [result.value] : [], ), ); }, });