hippofish/packages/backend/src/models/repositories/note-favorite.ts
ThatOneCalculator 6b00abf05c
refactor: 🎨 rome
2023-01-12 20:40:33 -08:00

31 lines
938 B
TypeScript

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] : [],
),
);
},
});