admin-revenue.ts20 lines · main
1import { Hono } from 'hono';
2
3import { requireAdmin } from '../middleware/admin.js';
4import { requireAuth } from '../middleware/session.js';
5import type { AppEnv } from '../types/app-env.js';
6import { getAdminRevenue } from '../services/admin-revenue.js';
7
8/**
9 * DEEP admin revenue endpoint. Read-only, so it takes the reads-no-step-up
10 * guard chain (requireAuth + requireAdmin) — same as the other admin GETs.
11 * Payload is a CONTRACT with the web revenue page (see services/admin-revenue.ts
12 * AdminRevenue). Real subscriptions + usage_events; MRR null until Mavi Pay is
13 * wired.
14 */
15export const adminRevenueRouter = new Hono<AppEnv>();
16
17adminRevenueRouter.use('/v1/admin/revenue', requireAuth());
18adminRevenueRouter.use('/v1/admin/revenue', requireAdmin());
19
20adminRevenueRouter.get('/v1/admin/revenue', async (c) => c.json(await getAdminRevenue()));