export default defineEventHandler(async (event) => { const { owner } = assertLibraryOwner(event) const id = String(getRouterParam(event, 'id') || '') const body = await readBody<{ folderId?: string; name?: string }>(event).catch(() => ({} as { folderId?: string; name?: string })) const folderId = String(body?.folderId || '') const hasName = typeof body?.name === 'string' if (!folderId && !hasName) { throw createError({ statusCode: 400, statusMessage: 'Choose a library folder or a new name' }) } const track = getTrack(owner, id) assertFolderAccess(event, track.folderId) if (folderId) { assertFolderExists(event, folderId) await moveTrack(owner, id, folderId) } if (hasName) await renameTrack(owner, id, body.name || '') return publicLibrary(event) })