import define from "../../../define.js";
import { RegistryItems } from "../../../../../models/index.js";
import { ApiError } from "../../../error.js";
export const meta = {
    requireCredential: true,
    secure: true,
    errors: {
        noSuchKey: {
            message: "No such key.",
            code: "NO_SUCH_KEY",
            id: "ac3ed68a-62f0-422b-a7bc-d5e09e8f6a6a"
        }
    }
};
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"
    ]
};
export default define(meta, paramDef, async (ps, user)=>{
    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;
});
