diff --git a/src/lib/components/EditableItem.svelte b/src/lib/components/EditableItem.svelte index e5405d8..d762761 100644 --- a/src/lib/components/EditableItem.svelte +++ b/src/lib/components/EditableItem.svelte @@ -18,7 +18,6 @@ let names = list.map((l: ListItem) => l.name); let localName = $state(currentName); - //let names = list; let wasCancelled = $state(false); // Automatisch berechneter Fehler @@ -51,10 +50,11 @@ // Speichern, wenn gültig und zurück an Eltern function commitIfValid() { - if (!validateName(localName) && !wasCancelled && localName != currentName) { + if (!error && !wasCancelled && localName != currentName) { editedName = localName.trim(); onSave(editedName, currentName); //Eltern benachrichtigen } else { + localName = currentName; resetEdit(); } } @@ -74,7 +74,7 @@ commitIfValid(); } else if (event.key === 'Escape') { event.preventDefault(); - editedName = currentName; + localName = currentName; resetEdit(); } } diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index e6b27b9..ab4dc3b 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -1,6 +1,7 @@ +
3D Tatort
diff --git a/src/routes/api/list/[[vorgang]]/+server.ts b/src/routes/api/list/[[vorgang]]/+server.ts index dcd9078..907d7b2 100644 --- a/src/routes/api/list/[[vorgang]]/+server.ts +++ b/src/routes/api/list/[[vorgang]]/+server.ts @@ -4,17 +4,47 @@ import { json } from '@sveltejs/kit'; -// Beispiel-Datenquelle (ersetzen durch echte DB oder Datei) -let mockList = [ "202505-test-se", "Minas-TestVorgang", "Testing-Mina", "xyz-123" ]; - +/* export const GET: RequestHandler = async ({ params }) => { const { filename } = params; // TODO: Datei lesen oder Datenbankabfrage return json({ filename, list: mockList }); +}; */ + +// rename operation +export async function PUT({ request }: {request: Request}) { + const data = await request.json(); + + + // Vorgang + const vorgang = request.url.split('/').at(-1); + + // prepare copy, incl. check if new name exists already + const old_name = data["old_name"]; + const src_full_path = `/tatort/${vorgang}/${old_name}`; + const new_name = `${vorgang}/${data["new_name"]}`; + + try { + await client.statObject('tatort', new_name); + 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', new_name, src_full_path) + + // delete + await client.removeObject('tatort', `${vorgang}/${old_name}`) + + // return success or failure + + return json({ success: 'success' }, { status: 200 }); }; -export const PUT: RequestHandler = async ({ request, params }) => { +/* export const PUT: RequestHandler = async ({ request, params }) => { const { filename } = params; const { oldName, newName } = await request.json(); @@ -41,43 +71,28 @@ export const PUT: RequestHandler = async ({ request, params }) => { return json({ success: true, updated: newName }); }; + */ -export const DELETE: RequestHandler = async ({ request, params }) => { - const { filename } = params; - const { name } = await request.json(); +export const DELETE: RequestHandler = async ({ request })=> { //body: {request}, keine params // params= de?param1=value¶ms2 + // const vorgang = params.vorgang; + const { vorgang } = await request.json(); - const index = mockList.findIndex((n) => n === name); - if (index === -1) { - return new Response('Name nicht gefunden', { status: 404 }); - } + const object_list:string[] = await new Promise((resolve, reject) => { + const res: string[] = []; + const items_str = client.listObjects('tatort', vorgang, true); + items_str.on('data', (obj) => { + if(obj.name) res.push(obj.name); + }); - console.log('📥 DELETE-Request empfangen:', mockList); - mockList.splice(index, 1); - console.log('📄 Datei:', filename); - console.log('🔁 gelöscht', mockList); - return json({ success: true, deleted: name }); -}; + items_str.on('error', reject); -// export async function DELETE({ params }) { -// const vorgang = params.vorgang; + items_str.on('end', async () => { + resolve(res); + }); + }); -// const object_list = await new Promise((resolve, reject) => { -// const res = []; -// const items_str = client.listObjects('tatort', vorgang, true); + await client.removeObjects('tatort', object_list); -// items_str.on('data', (obj) => { -// res.push(obj.name); -// }); - -// items_str.on('error', reject); - -// items_str.on('end', async () => { -// resolve(res); -// }); -// }); - -// await client.removeObjects('tatort', object_list); - -// return new Response(null, { status: 204 }); -// } + return new Response(null, { status: 204 }); + } diff --git a/src/routes/api/tatort/+server.ts b/src/routes/api/tatort/+server.ts index 73f9033..872a4be 100644 --- a/src/routes/api/tatort/+server.ts +++ b/src/routes/api/tatort/+server.ts @@ -1,4 +1,5 @@ import { BUCKET, client } from '$lib/minio'; +import type { RequestHandler } from '@sveltejs/kit'; export async function GET() { const stream = client.listObjectsV2(BUCKET, '', true); @@ -24,7 +25,7 @@ export async function GET() { } -export async function DELETE({ request }: { request: Request }) { +/* export async function DELETE({ request }: { request: Request }) { const url_fragments = request.url.split('/'); const item = url_fragments.at(-1); const vorgang = url_fragments.at(-2); @@ -32,4 +33,38 @@ export async function DELETE({ request }: { request: Request }) { await client.removeObject(BUCKET, `${vorgang}/${item}`); return new Response(null, { status: 204 }); -} +} */ + +export const DELETE: RequestHandler = async ({ request,params })=> { //body: {request}, keine params // params= de?param1=value¶ms2 + +const token = params; + let {vorgang, tatort} = await request.json(); + + console.log("Server Delete ", vorgang, tatort, token ); + const url_fragments = request.url.split('/'); + tatort = url_fragments.at(-1); + vorgang = url_fragments.at(-2); + + await client.removeObject(BUCKET, `${vorgang}/${tatort}?token=${token}`) + return new Response(null, { status: 204 }); + // const vorgang = params.vorgang; +/* + const object_list:string[] = await new Promise((resolve, reject) => { + const res: string[] = []; + const items_str = client.listObjects('tatort', vorgang, true); + + items_str.on('data', (obj) => { + if(obj.name) res.push(obj.name); + }); + + items_str.on('error', reject); + + items_str.on('end', async () => { + resolve(res); + }); + }); + + await client.removeObjects('tatort', object_list); + + return new Response(null, { status: 204 }); */ + }