From dab71fc5eb659a0ca6721870b805badf33767f51 Mon Sep 17 00:00:00 2001 From: Sturla Elvestad Date: Thu, 15 Oct 2026 13:41:49 +0200 Subject: [PATCH 1/4] docs(backend): explain connection pool size Co-Authored-By: Claude Opus 5.5 --- backend/src/db.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/db.ts b/backend/src/db.ts index 703fed0..b14da31 100644 --- a/backend/src/db.ts +++ b/backend/src/db.ts @@ -11,6 +11,7 @@ export function createPool( ): pg.Pool { const pool = new pg.Pool({ connectionString, + // Godt under Postgres' standardgrense på 100 tilkoblinger, så import og psql får plass samtidig. max: 10, // Uten tidsgrense henger en tilkobling mot en database bak brannmur til OS gir opp, og // /health og spørringer fyller poolen mens de venter. From 89eb64557df487cbe03ee56f02fd7a3e7ed10f2a Mon Sep 17 00:00:00 2001 From: Sturla Elvestad Date: Thu, 15 Oct 2026 13:43:30 +0200 Subject: [PATCH 2/4] docs(backend): explain error codes in extensions Co-Authored-By: Claude Opus 5.5 --- backend/src/errors.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/errors.ts b/backend/src/errors.ts index b7d5e0f..5974197 100644 --- a/backend/src/errors.ts +++ b/backend/src/errors.ts @@ -2,6 +2,7 @@ import { GraphQLError } from 'graphql'; type ErrorCode = 'BAD_USER_INPUT' | 'NOT_FOUND' | 'UNAUTHENTICATED' | 'RATE_LIMITED'; +// Koden i extensions lar frontend skille feiltyper uten å tolke meldingsteksten. function make(code: ErrorCode) { return (message: string) => new GraphQLError(message, { extensions: { code } }); } From 4a33dec135aec5263d7dd9341260831427a787ec Mon Sep 17 00:00:00 2001 From: Sturla Elvestad Date: Thu, 15 Oct 2026 13:43:31 +0200 Subject: [PATCH 3/4] docs(import): explain digit limit in optionalInt Co-Authored-By: Claude Opus 5.5 --- backend/scripts/import-core.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/scripts/import-core.ts b/backend/scripts/import-core.ts index 8d9bff5..c84fccd 100644 --- a/backend/scripts/import-core.ts +++ b/backend/scripts/import-core.ts @@ -36,6 +36,7 @@ export interface TitleRow { /** IMDb skriver `\N` for manglende verdi. */ const NULL = '\\N'; +/** Maks 9 sifre holder verdien innenfor Postgres' integer, så importen ikke feiler på søppeldata. */ function optionalInt(value: string | undefined): number | null { if (value === undefined || value === NULL || !/^\d{1,9}$/.test(value)) return null; return Number(value); From 4b1c3f3c28402b44818403f591fd065b95067ad1 Mon Sep 17 00:00:00 2001 From: Sturla Elvestad Date: Thu, 15 Oct 2026 13:43:33 +0200 Subject: [PATCH 4/4] docs(backend): explain int fallback in config Co-Authored-By: Claude Opus 5.5 --- backend/src/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/config.ts b/backend/src/config.ts index d81ea22..d884781 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -24,6 +24,7 @@ export const repoRoot = findRepoRoot(); // Miljøvariabler som allerede er satt (f.eks. i CI) vinner over .env. dotenv.config({ path: path.join(repoRoot, '.env'), quiet: true }); +// Ugyldig eller manglende verdi i .env gir standardverdien i stedet for NaN. function int(value: string | undefined, fallback: number): number { const n = Number.parseInt(value ?? '', 10); return Number.isFinite(n) ? n : fallback;