import { and, eq } from 'drizzle-orm'; import * as z from 'zod'; import { models } from '~~/drizzle/schema'; import { db } from '~~/server/lib/db'; export default defineEventHandler(async (event) => { await protectRoute(event); const userId = event.context.user!.id as string; const provider = await db.query.providers.findFirst({ where: { id: getRouterParam(event, 'providerId'), userId, }, }); if (!provider) throw createError({ statusCode: 404, message: 'Provider not found' }); const result = await readValidatedBody(event, (body) => z.object({ enabled: z.boolean() }).safeParse(body) ); if (!result.success) { throw createError({ statusCode: 400, message: result.error.issues[0]!.message }); } const { enabled } = result.data; const res = await db.update(models).set({ enabled }).where(and( eq(models.userId, userId), eq(models.providerId, provider.id), )); return { ok: res.rowCount ?? 0 > 0, }; });