Delete album endpoint

This commit is contained in:
Jorge Vargas 2025-03-13 22:16:46 -06:00
parent 12063db819
commit ec311826f9
3 changed files with 44 additions and 7 deletions

View file

@ -3,7 +3,7 @@ import * as s from 'superstruct'
import prismaClient from 'utils/prisma-client'
import { AlbumStatus } from '@prisma/client'
import { Status, formToObject, slug } from 'utils/form'
import { Status, parseForm, slug } from 'utils/form'
import { writeImg, getImgColor } from 'utils/img'
import { handleComplete } from 'integrations/requestCat'
import { CreateAlbum } from 'schemas/album'
@ -16,11 +16,8 @@ export const POST: APIRoute = async ({ request, locals }) => {
let body
try {
const formData = await request.formData()
const formObject = formToObject(formData)
const { data, ...rest } = formObject
body = s.create({ ...JSON.parse(data), ...rest }, CreateAlbum)
const formData = await parseForm(request)
body = s.create(formData, AlbumSchema)
} catch (err) {
return Status(422, (err as Error).message)
}

View file

@ -0,0 +1,31 @@
import type { APIRoute } from 'astro'
import * as s from 'superstruct'
import prismaClient from 'utils/prisma-client'
import { Status, parseForm } from 'utils/form'
const DeleteAlbum = s.object({ albumId: s.number() })
export const POST: APIRoute = async ({ request, locals }) => {
const { session, permissions, user } = locals
if (!session || !user) return Status(401)
if (!permissions.includes('CREATE')) return Status(403)
let body
try {
const formData = await parseForm(request)
body = s.create(formData, DeleteAlbum)
await prismaClient.albums.findUniqueOrThrow({ where: { id: body.albumId }, select: { id: true } })
} catch (err) {
return Status(422, (err as Error).message)
}
try {
await prismaClient.albums.delete({ where: { id: body.albumId } })
return Status(200, body.albumId.toString())
} catch (err) {
console.error(err)
return Status(500, (err as Error).message)
}
}