import define from "../../../define.js"; import { ApiError } from "../../../error.js"; import { GalleryPosts, GalleryLikes } from "@/models/index.js"; export const meta = { tags: ["gallery"], requireCredential: true, kind: "write:gallery-likes", errors: { noSuchPost: { message: "No such post.", code: "NO_SUCH_POST", id: "c32e6dd0-b555-4413-925e-b3757d19ed84", }, notLiked: { message: "You have not liked that post.", code: "NOT_LIKED", id: "e3e8e06e-be37-41f7-a5b4-87a8250288f0", }, }, } as const; export const paramDef = { type: "object", properties: { postId: { type: "string", format: "misskey:id" }, }, required: ["postId"], } as const; export default define(meta, paramDef, async (ps, user) => { const post = await GalleryPosts.findOneBy({ id: ps.postId }); if (post == null) { throw new ApiError(meta.errors.noSuchPost); } const like = await GalleryLikes.findOneBy({ postId: post.id, userId: user.id, }); if (like == null) { throw new ApiError(meta.errors.notLiked); } // Delete like await GalleryLikes.delete(like.id); GalleryPosts.decrement({ id: post.id }, "likedCount", 1); });