diff options
author | Linnnus <[email protected]> | 2025-02-22 16:05:11 +0100 |
---|---|---|
committer | Linnnus <[email protected]> | 2025-02-22 16:05:11 +0100 |
commit | aa3accb6b394b2b4164061e6e962228ab8285ca6 (patch) | |
tree | 008cbf6b966415f184855a9a7efda6a3fcb3e9b7 | |
parent | 4baf5083f99df02ca33eca6a6a9bbc62bf795251 (diff) |
Move hooks into their own modules
-rw-r--r-- | app/src/hooks.server.ts | 30 | ||||
-rw-r--r-- | app/src/lib/server/db.ts | 14 | ||||
-rw-r--r-- | app/src/lib/server/s3.ts | 14 |
3 files changed, 27 insertions, 31 deletions
diff --git a/app/src/hooks.server.ts b/app/src/hooks.server.ts index 78342cd..96285d0 100644 --- a/app/src/hooks.server.ts +++ b/app/src/hooks.server.ts @@ -1,34 +1,10 @@ -import { getDbClient } from "$lib/server/db"; -import { getS3Client } from "$lib/server/s3"; +import { dbHandle } from "$lib/server/db"; +import { s3Handle } from "$lib/server/s3"; import { validateSessionToken } from "$lib/server/sessions"; -import { type Handle } from "@sveltejs/kit"; +import { type Handle } from "@sveltejs/kit"; /*=;*/ import { sequence } from "@sveltejs/kit/hooks"; import { beanstalkdHandle } from "$lib/server/beanstalkd"; -const dbHandle = (async ({ event, resolve }) => { - const dbClient = await getDbClient(); - event.locals.dbClient = dbClient; - - try { - return await resolve(event); - } finally { - dbClient.release(); - } -}) satisfies Handle; - -// FIXME: Kind of stupid to load for every request. Should probs move handler to $lib and import for relevant routes. -// Same goes for beanstalkd. -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 }) => { const sessionToken = event.cookies.get("SESSION_ID"); if (sessionToken) { diff --git a/app/src/lib/server/db.ts b/app/src/lib/server/db.ts index db001b7..b35f853 100644 --- a/app/src/lib/server/db.ts +++ b/app/src/lib/server/db.ts @@ -1,5 +1,6 @@ import pg from "pg"; import { env } from "$env/dynamic/private"; +import type { Handle } from "@sveltejs/kit"; const pool = new pg.Pool({ database: env.POSTGRES_DB || "postgres", @@ -15,6 +16,13 @@ pool.on("error", (err, client) => { console.error("Database error: ", err, client); }); -export function getDbClient(): Promise<pg.PoolClient> { - return pool.connect(); -} +export const dbHandle = (async ({ event, resolve }) => { + const dbClient = await pool.connect(); + event.locals.dbClient = dbClient; + + try { + return await resolve(event); + } finally { + dbClient.release(); + } +}) satisfies Handle; diff --git a/app/src/lib/server/s3.ts b/app/src/lib/server/s3.ts index a1a28fa..5d0dec9 100644 --- a/app/src/lib/server/s3.ts +++ b/app/src/lib/server/s3.ts @@ -1,7 +1,8 @@ import { S3Client } from "@aws-sdk/client-s3"; +import type { Handle } from "@sveltejs/kit"; // We would obviously read from .env in prod, but it's an annoying indirection for this demo. -export function getS3Client(): S3Client { +function getS3Client(): S3Client { const client = new S3Client({ endpoint: "http://localhost:9000", region: "us-east-1", // Required, but ignored for local usage. @@ -14,3 +15,14 @@ export function getS3Client(): S3Client { return client; } + +export const s3Handle = (async ({ event, resolve }) => { + const s3Client = getS3Client(); + event.locals.s3Client = s3Client; + + try { + return await resolve(event); + } finally { + s3Client.destroy(); + } +}) satisfies Handle; |