import { Pages, PageLikes } from "../../../../models/index.js"; import { genId } from "../../../../misc/gen-id.js"; import define from "../../define.js"; import { ApiError } from "../../error.js"; export const meta = { tags: [ "pages" ], requireCredential: true, kind: "write:page-likes", errors: { noSuchPage: { message: "No such page.", code: "NO_SUCH_PAGE", id: "cc98a8a2-0dc3-4123-b198-62c71df18ed3" }, alreadyLiked: { message: "The page has already been liked.", code: "ALREADY_LIKED", id: "cc98a8a2-0dc3-4123-b198-62c71df18ed3" } } }; export const paramDef = { type: "object", properties: { pageId: { type: "string", format: "misskey:id" } }, required: [ "pageId" ] }; export default define(meta, paramDef, async (ps, user)=>{ const page = await Pages.findOneBy({ id: ps.pageId }); if (page == null) { throw new ApiError(meta.errors.noSuchPage); } // if already liked const exist = await PageLikes.exist({ where: { pageId: page.id, userId: user.id } }); if (exist) { throw new ApiError(meta.errors.alreadyLiked); } // Create like await PageLikes.insert({ id: genId(), createdAt: new Date(), pageId: page.id, userId: user.id }); Pages.increment({ id: page.id }, "likedCount", 1); });