Files
2026-07-26 18:25:37 +09:00

55 lines
1.3 KiB
JavaScript

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"
}
}
};
export const paramDef = {
type: "object",
properties: {
postId: {
type: "string",
format: "misskey:id"
}
},
required: [
"postId"
]
};
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);
});