forked from BRETT/BRETT
Initial Commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { eq } from 'drizzle-orm'
|
||||
import { z } from 'zod'
|
||||
import { threadSubscriptions, uploads, users } from '../../../db/schema'
|
||||
|
||||
const bodySchema = z.object({ enabled: z.boolean() })
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = await requireUser(event)
|
||||
const uploadId = getRouterParam(event, 'id') ?? ''
|
||||
if (!/^[A-Za-z0-9]{1,8}$/.test(uploadId)) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Ungültige ID' })
|
||||
}
|
||||
const { enabled } = await readValidatedBody(event, bodySchema.parse)
|
||||
const db = useDb()
|
||||
const [upload] = await db.select({ id: uploads.id }).from(uploads).where(eq(uploads.id, uploadId)).limit(1)
|
||||
if (!upload) throw createError({ statusCode: 404, statusMessage: 'Upload nicht gefunden' })
|
||||
await db.transaction(async (tx) => {
|
||||
await tx.select({ id: users.id }).from(users).where(eq(users.id, user.id)).for('update')
|
||||
await tx.insert(threadSubscriptions).values({ uploadId, userId: user.id, enabled })
|
||||
.onDuplicateKeyUpdate({ set: { enabled } })
|
||||
})
|
||||
return { enabled }
|
||||
})
|
||||
Reference in New Issue
Block a user