← back to AbramsOS

routes/home.js

34 lines

const express = require('express');
const db = require('../lib/db');

const router = express.Router();
const DEV_USER_ID = 'user_steve';

router.get('/', async (_req, res) => {
  const [connectorCount, purchaseCount, lastSync, recent, savings] = await Promise.all([
    db.query(`SELECT count(*)::int AS n FROM connector_account WHERE user_id = $1`, [DEV_USER_ID]),
    db.query(`SELECT count(*)::int AS n FROM purchase WHERE user_id = $1`, [DEV_USER_ID]),
    db.query(`SELECT max(last_sync_at) AS t FROM connector_account WHERE user_id = $1`, [DEV_USER_ID]),
    db.query(
      `SELECT id, merchant_name, total_amount, currency, purchase_date
         FROM purchase WHERE user_id = $1 ORDER BY purchase_date DESC LIMIT 6`,
      [DEV_USER_ID]
    ),
    db.query(
      `SELECT count(*)::int AS n, COALESCE(sum(est_savings),0) AS total
         FROM savings_suggestion WHERE user_id = $1 AND status IN ('new','saved')`,
      [DEV_USER_ID]
    ),
  ]);
  res.render('home', {
    connectorCount: connectorCount.rows[0].n,
    purchaseCount: purchaseCount.rows[0].n,
    lastSync: lastSync.rows[0].t,
    recent: recent.rows,
    savingsCount: savings.rows[0].n,
    savingsTotal: Number(savings.rows[0].total) || 0,
  });
});

module.exports = router;