import { ApiError } from "../../../error.js"; import define from "../../../define.js"; import { RegistryItems } from "@/models/index.js"; export const meta = { requireCredential: true, secure: false, errors: { noSuchKey: { message: "No such key.", code: "NO_SUCH_KEY", id: "ac3ed68a-62f0-422b-a7bc-d5e09e8f6a6a", }, }, } as const; export const paramDef = { type: "object", properties: { key: { type: "string" }, scope: { type: "array", default: [], items: { type: "string", pattern: /^[a-zA-Z0-9_]+$/.toString().slice(1, -1), }, }, }, required: ["key"], } as const; export default define(meta, paramDef, async (ps, user) => { if (ps.key !== "reactions" && ps.key !== "defaultNoteVisibility") return; const query = RegistryItems.createQueryBuilder("item") .where("item.domain IS NULL") .andWhere("item.userId = :userId", { userId: user.id }) .andWhere("item.key = :key", { key: ps.key }) .andWhere("item.scope = :scope", { scope: ps.scope }); const item = await query.getOne(); if (item == null) { throw new ApiError(meta.errors.noSuchKey); } return item.value; });