import define from "../../../define.js";
import { Plans, UserPlans, Users } from "../../../../../models/index.js";
import { genId } from "../../../../../misc/gen-id.js";
import { insertModerationLog } from "../../../../../services/insert-moderation-log.js";
export const meta = {
    tags: [
        "admin"
    ],
    requireCredential: true,
    requireAdmin: true
};
export const paramDef = {
    type: "object",
    properties: {
        userId: {
            type: "string",
            format: "misskey:id"
        },
        planId: {
            type: "string",
            format: "misskey:id"
        }
    },
    required: [
        "userId",
        "planId"
    ]
};
export default define(meta, paramDef, async (ps, me)=>{
    await Users.findOneByOrFail({
        id: ps.userId
    });
    await Plans.findOneByOrFail({
        id: ps.planId
    });
    const exists = await UserPlans.findOneBy({
        userId: ps.userId,
        planId: ps.planId
    });
    if (exists) return;
    await UserPlans.insert({
        id: genId(),
        createdAt: new Date(),
        userId: ps.userId,
        planId: ps.planId
    });
    insertModerationLog(me, "addUserPlan", {
        targetId: ps.userId,
        planId: ps.planId
    });
});
