Een dating-app op basis van brieven, niet van gezichten!
Deze repository wordt als momentopname gepubliceerd: een clone bevat de volledige inhoud, maar geen commitgeschiedenis.
import pg from "pg";
/* Eén pool voor de hele server; DATABASE_URL bepaalt waar we heen gaan */
export const pool = new pg.Pool({
connectionString: process.env.DATABASE_URL ?? "postgres://postgres@localhost:5432/liefdesbrieven",
});
/* pg geeft `date`-kolommen standaard als JS Date terug; wij willen ISO 'YYYY-MM-DD' */
pg.types.setTypeParser(pg.types.builtins.DATE, (v) => v);
export const query = (text, params) => pool.query(text, params);
/*
* Meerdere queries als één geheel, op dezelfde verbinding (een brief mét foto: allebei of geen van
* beide). `fn` krijgt een query-functie die op die verbinding werkt — gebruik binnen fn dus die, niet
* de query() hierboven.
*/
export async function transaction(fn) {
const client = await pool.connect();
try {
await client.query("begin");
const result = await fn((text, params) => client.query(text, params));
await client.query("commit");
return result;
} catch (err) {
await client.query("rollback").catch(() => {});
throw err;
} finally {
client.release();
}
}