Files
jlinc-server/backend/modules/dashboard/usage.js
2026-08-20 15:08:32 +00:00

26 lines
796 B
JavaScript

import { getPool } from "../../db/index.js";
// The 'archive' module is surfaced to the UI as "audit".
export async function getApiUsage(userId, { from, to }) {
const client = await getPool();
try {
const r = (
await client.query(
`SELECT
COALESCE(SUM(CASE WHEN uu.module = 'core' THEN 1 END), 0)::int AS core,
COALESCE(SUM(CASE WHEN uu.module = 'archive' THEN 1 END), 0)::int AS audit
FROM usage u
JOIN usage_url uu ON uu.id = u.usage_url_id
WHERE u.user_id = $1
AND u.created_ts >= $2::date
AND u.created_ts < ($3::date + 1)`,
[userId, from, to],
)
).rows[0];
return { core: r.core, audit: r.audit, total: r.core + r.audit };
} finally {
await client.release();
}
}