diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index fff40ab..d2fdc0b 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -6,6 +6,7 @@
@@ -61,7 +89,16 @@ />
-

{item.name}

+ {item.name} + +
diff --git a/src/routes/(angemeldet)/list/[vorgang]/+server.js b/src/routes/(angemeldet)/list/[vorgang]/+server.js new file mode 100644 index 0000000..d090407 --- /dev/null +++ b/src/routes/(angemeldet)/list/[vorgang]/+server.js @@ -0,0 +1,36 @@ +import { client } from '$lib/minio'; +import { json } from '@sveltejs/kit'; + + +// rename operation +export async function PUT({ request }) { + const data = await request.json(); + + console.log(`--- ${request.url.split('/').at(-1)} +++ ${JSON.stringify(data)}`); + + // Vorgang + let vorgang = request.url.split('/').at(-1) + + // prepare copy, incl. check if new name exists already + let old_name = data["old_name"] + let src_full_path = `/tatort/${vorgang}/${old_name}` + let new_name = `${vorgang}/${data["new_name"]}` + + try { + let file_stats = await client.statObject('tatort', new_name) + return json({ msg: 'Die Datei existiert bereits.' }, { status: 400 }) + } catch (error) { + // continue operation + console.log('continue operation') + } + + // actual copy operation + await client.copyObject('tatort', new_name, src_full_path) + + // delete + await client.removeObject('tatort', `${vorgang}/${old_name}`) + + // return success or failure + + return json({ success: 'success' }, { status: 200 }); +}; diff --git a/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js b/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js new file mode 100644 index 0000000..76dd05d --- /dev/null +++ b/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js @@ -0,0 +1,13 @@ +import { client } from '$lib/minio'; +import { json } from '@sveltejs/kit'; + +export async function DELETE({ request }) { + + let url_fragments = request.url.split('/') + let item = url_fragments.at(-1); + let vorgang = url_fragments.at(-2); + + await client.removeObject('tatort', `${vorgang}/${item}`) + + return new Response(null, { status: 204 }); +}; diff --git a/src/routes/api/list/[[vorgang]]/+server.js b/src/routes/api/list/[[vorgang]]/+server.js index 9115150..c1729fa 100644 --- a/src/routes/api/list/[[vorgang]]/+server.js +++ b/src/routes/api/list/[[vorgang]]/+server.js @@ -33,3 +33,31 @@ export async function GET({ params }) { } }); } + + +export async function DELETE({ params }) { + const vorgang = params.vorgang + + const object_list = await new Promise((resolve, reject) => { + + const res = [] + const items_str = client.listObjects('tatort', vorgang, true) + + items_str.on('data', (obj) => { + res.push(obj.name) + }) + + items_str.on('error', reject) + + items_str.on('end', async () => { + resolve(res) + }) + + console.log(`+++ ${vorgang}`) + + }) + + await client.removeObjects('tatort', object_list) + + return new Response(null, { status: 204 }); +};