summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2025-02-22 16:05:11 +0100
committerLinnnus <[email protected]>2025-02-22 16:05:11 +0100
commitaa3accb6b394b2b4164061e6e962228ab8285ca6 (patch)
tree008cbf6b966415f184855a9a7efda6a3fcb3e9b7
parent4baf5083f99df02ca33eca6a6a9bbc62bf795251 (diff)
Move hooks into their own modules
-rw-r--r--app/src/hooks.server.ts30
-rw-r--r--app/src/lib/server/db.ts14
-rw-r--r--app/src/lib/server/s3.ts14
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;