← back to Dw Launches

db.js

38 lines

'use strict';
/*
 * dw-launches DB layer — read-only access to the local dw_unified mirror.
 * Defaults to Unix-socket peer auth (same path psql uses on Mac2), so no
 * password is needed locally. Everything is env-overridable for other hosts.
 *   PGHOST     (default /tmp           — Homebrew PG socket dir)
 *   PGDATABASE (default dw_unified)
 *   PGUSER     (default $USER / stevestudio2)
 * Or pass a full DATABASE_URL to override entirely.
 */
const { Pool } = require('pg');

const pool = process.env.DATABASE_URL
  ? new Pool({ connectionString: process.env.DATABASE_URL, max: 4 })
  : new Pool({
      host: process.env.PGHOST || '/tmp',
      database: process.env.PGDATABASE || 'dw_unified',
      user: process.env.PGUSER || process.env.USER || 'stevestudio2',
      max: 4
    });

pool.on('error', (e) => console.error('[db] pool error:', e.message));

async function q(text, params) {
  const c = await pool.connect();
  try { return await c.query(text, params); }
  finally { c.release(); }
}

// Quick liveness probe used by /api/media/sources so the UI can show a clear
// "DB unreachable" state instead of an empty grid.
async function ping() {
  try { await q('select 1'); return true; }
  catch { return false; }
}

module.exports = { pool, q, ping };