diff options
Diffstat (limited to 'app/src/hooks.server.ts')
-rw-r--r-- | app/src/hooks.server.ts | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/app/src/hooks.server.ts b/app/src/hooks.server.ts index 79535f9..8439eb3 100644 --- a/app/src/hooks.server.ts +++ b/app/src/hooks.server.ts @@ -1,16 +1,30 @@ import { getDbConnection } from "$lib/server/db"; +import { getS3Client } from "$lib/server/s3"; import { validateSessionToken } from "$lib/server/sessions"; -import { redirect, type Handle } from "@sveltejs/kit"; +import { type Handle } from "@sveltejs/kit"; import { sequence } from "@sveltejs/kit/hooks"; const dbHandle = (async ({ event, resolve }) => { const dbConn = await getDbConnection(); - event.locals = { dbConn }; + event.locals.dbConn = dbConn; - const response = await resolve(event); - dbConn.release(); + try { + return await resolve(event); + } finally { + dbConn.release(); + } +}) satisfies Handle; - return response; +// FIXME: Kind of stupid to load for every request. Should probs move handler to $lib and import for relevant routes. +const s3Handle = (async ({ event, resolve }) => { + const s3Client = getS3Client(); + event.locals.s3Client = s3Client; + + try { + return await resolve(event); + } finally { + s3Client.destroy(); + } }) satisfies Handle; const sessionHandle = (async ({ event, resolve }) => { @@ -25,4 +39,4 @@ const sessionHandle = (async ({ event, resolve }) => { return resolve(event); }) satisfies Handle; -export const handle = sequence(dbHandle, sessionHandle); +export const handle = sequence(dbHandle, s3Handle, sessionHandle); |