Een dating-app op basis van brieven, niet van gezichten!

main

Deze repository wordt als momentopname gepubliceerd: een clone bevat de volledige inhoud, maar geen commitgeschiedenis.

1.0 kB Ruw bestand
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();
  }
}