export default defineEventHandler(async (event) => { const { owner } = assertLibraryOwner(event) const id = String(getRouterParam(event, 'id') || '') const body = await readBody<{ folderId?: string; name?: string; family?: boolean }>(event).catch(() => ({} as { folderId?: string; name?: string; family?: boolean })) const folderId = String(body?.folderId || '') const hasName = typeof body?.name === 'string' const family = body?.family === true if (!folderId && !hasName) { throw createError({ statusCode: 400, statusMessage: 'Choose a library folder or a new name' }) } const still = getStill(owner, id) assertFolderAccess(event, still.folderId) if (folderId) { assertFolderExists(event, folderId) if (family) await moveStillFamily(owner, id, folderId) else await moveStill(owner, id, folderId) } if (hasName) { if (family) await renameStillFamily(owner, id, body.name || '') else await renameStill(owner, id, body.name || '') } return publicLibrary(event) })