diff --git a/src/routes/api/list/[vorgang]/[tatort]/+server.ts b/src/routes/api/list/[vorgang]/[tatort]/+server.ts index 73f9033..a81f385 100644 --- a/src/routes/api/list/[vorgang]/[tatort]/+server.ts +++ b/src/routes/api/list/[vorgang]/[tatort]/+server.ts @@ -1,4 +1,6 @@ import { BUCKET, client } from '$lib/minio'; +import { json, type RequestHandler } from '@sveltejs/kit'; +import { getVorgangByName } from '$lib/server/vorgangService'; export async function GET() { const stream = client.listObjectsV2(BUCKET, '', true); @@ -23,7 +25,6 @@ export async function GET() { }); } - export async function DELETE({ request }: { request: Request }) { const url_fragments = request.url.split('/'); const item = url_fragments.at(-1); @@ -33,3 +34,39 @@ export async function DELETE({ request }: { request: Request }) { return new Response(null, { status: 204 }); } + +// rename operation for crimes +export async function PUT({ params, request }: { params: RequestHandler; request: Request }) { + const data = await request.json(); + + // Vorgang + const vorgangName = params.vorgang; + const vorgangToken = getVorgangByName(vorgangName)?.token; + + // prepare copy, incl. check if new name exists already + const crimeOldName = data['oldName']; + const crimeS3FullBucketPathOld = `/tatort/${vorgangToken}/${crimeOldName}`; + const crimeNewName = `${vorgangToken}/${data['newName']}`; + + if (!crimeOldName || !crimeNewName) { + return json({ msg: 'Der Name darf nicht leer sein.' }, { status: 400 }); + } + + try { + await client.statObject('tatort', crimeNewName); + return json({ msg: 'Die Datei existiert bereits.' }, { status: 400 }); + } catch (error) { + // continue operation + console.log(error, 'continue operation'); + } + + // actual copy operation + await client.copyObject('tatort', crimeNewName, crimeS3FullBucketPathOld); + + console.log(`+++ weiter geht's`); + + // delete + await client.removeObject('tatort', `${vorgangToken}/${crimeOldName}`); + + return json({ success: 'success' }, { status: 200 }); +}