f034_sqlite_database #19

Merged
jared merged 34 commits from f034_sqlite_database into development 2025-07-24 14:34:39 +02:00
Showing only changes of commit 40599f4ffa - Show all commits

View File

@@ -2,6 +2,9 @@ import { Buffer } from 'buffer';
import { Readable } from 'stream'; import { Readable } from 'stream';
import { client } from '$lib/minio'; import { client } from '$lib/minio';
import { fail } from '@sveltejs/kit'; import { fail } from '@sveltejs/kit';
import { v4 as uuidv4 } from 'uuid';
import Database from 'better-sqlite3';
const isRequiredFieldValid = (value: unknown) => { const isRequiredFieldValid = (value: unknown) => {
if (value == null) return false; if (value == null) return false;
@@ -9,10 +12,10 @@ const isRequiredFieldValid = (value: unknown) => {
if (typeof value === 'string' || value instanceof String) return value.trim() !== ''; if (typeof value === 'string' || value instanceof String) return value.trim() !== '';
return true; return true;
} };
export const actions = { export const actions = {
url: async ({ request }: {request: Request}) => { url: async ({ request }: { request: Request }) => {
const data = await request.formData(); const data = await request.formData();
const vorgang = data.get('vorgang'); const vorgang = data.get('vorgang');
const name = data.get('name'); const name = data.get('name');
@@ -26,22 +29,23 @@ export const actions = {
if (!objectName.endsWith('.png')) objectName += '.png'; if (!objectName.endsWith('.png')) objectName += '.png';
break; break;
case '': case '':
if (fileName?.toString().endsWith('.glb') && !objectName.endsWith('.glb')) objectName += '.glb'; if (fileName?.toString().endsWith('.glb') && !objectName.endsWith('.glb'))
objectName += '.glb';
} }
const url = await client.presignedPutObject('tatort', objectName); const url = await client.presignedPutObject('tatort', objectName);
// store code in S3 // store case in database
// tatort/<vorgang>/__perm__
const code_filename = '__perm__'; let db = new Database('./src/lib/data/tatort.db');
const buf = Buffer.from(code, 'utf-8'); let token = uuidv4();
const code_stream = Readable.from(buf); let insert_stmt = `INSERT INTO cases (token, name, pw) VALUES (?, ?, ?)`;
const code_path = `${vorgang}/${code_filename}`; const stmt = db.prepare(insert_stmt);
await client.putObject('tatort', code_path, code_stream); stmt.run(token, vorgang, code);
return { url }; return { url };
}, },
validate: async ({ request }: {request: Request}) => { validate: async ({ request }: { request: Request }) => {
const requestData = await request.formData(); const requestData = await request.formData();
const data = Object.fromEntries(requestData); const data = Object.fromEntries(requestData);
const vorgang = data.vorgang; const vorgang = data.vorgang;
@@ -73,7 +77,7 @@ export const actions = {
return fail(400, err); return fail(400, err);
}, },
upload: async ({ request }: {request: Request}) => { upload: async ({ request }: { request: Request }) => {
const requestData = await request.formData(); const requestData = await request.formData();
const data = Object.fromEntries(requestData); const data = Object.fromEntries(requestData);
const vorgang = data.vorgang; const vorgang = data.vorgang;
@@ -83,7 +87,7 @@ export const actions = {
return { url }; return { url };
}, },
upload3: async ({ request }: {request: Request}) => { upload3: async ({ request }: { request: Request }) => {
const requestData = await request.formData(); const requestData = await request.formData();
const data = Object.fromEntries(requestData); const data = Object.fromEntries(requestData);
const name = data.name; const name = data.name;