39 lines
1.2 KiB
TypeScript

import { getProfile } from "../../db/profile";
import { getPlanLimits } from "../../utils/plan-features";
import { updateMailConnectionInterval } from "../../db/mail";
/**
* PATCH /api/mail/interval
* Body: { connectionId, interval: 1 | 8 | 24 }
* Setzt das Scan-Intervall für eine Mail-Verbindung.
*/
export default defineEventHandler(async (event) => {
const user = await requireUser(event);
const { connectionId, interval } = (await readBody(event)) as {
connectionId: string;
interval: number;
};
if (!connectionId || !Number.isInteger(interval) || interval < 1) {
throw createError({
statusCode: 400,
message: "connectionId und interval erforderlich",
});
}
// Plan-Limit: erlaubte Intervalle prüfen
const profile = await getProfile(user.id);
const limits = getPlanLimits(profile?.plan ?? "free");
if (!limits.mailIntervalOptions.includes(interval)) {
throw createError({
statusCode: 403,
message: `Dein Plan erlaubt nur folgende Intervalle (Stunden): ${limits.mailIntervalOptions.join(", ")}`,
});
}
await updateMailConnectionInterval(user.id, connectionId, interval);
return { ok: true, interval };
});