import define from "../../define.js";
import { ApiError } from "../../error.js";
import { ShogiGames, Users } from "../../../../models/index.js";
import { matchAnyUser, matchSpecificUser } from "../../../../services/shogi/index.js";
export const meta = {
    tags: [
        "shogi"
    ],
    requireCredential: true,
    kind: "write:account",
    errors: {
        noSuchUser: {
            message: "No such user.",
            code: "NO_SUCH_USER",
            id: "6dc7bf6e-d472-42ec-95c7-43d8f91ecf97"
        },
        isYourself: {
            message: "Target user is yourself.",
            code: "TARGET_IS_YOURSELF",
            id: "d7cb9670-245e-4fc4-90d0-11cc1796f647"
        }
    },
    res: {
        type: "object",
        optional: true,
        nullable: false
    }
};
export const paramDef = {
    type: "object",
    properties: {
        userId: {
            type: "string",
            format: "misskey:id",
            nullable: true
        },
        multiple: {
            type: "boolean",
            default: false
        }
    },
    required: []
};
export default define(meta, paramDef, async (ps, user)=>{
    if (ps.userId === user.id) throw new ApiError(meta.errors.isYourself);
    const target = ps.userId ? await Users.findOneBy({
        id: ps.userId
    }).then((u)=>{
        if (!u) throw new ApiError(meta.errors.noSuchUser);
        return u;
    }) : null;
    const game = target ? await matchSpecificUser(user, target, ps.multiple) : await matchAnyUser(user, ps.multiple);
    return game ? await ShogiGames.packDetail(game) : undefined;
});
