diff --git a/artifacts/api-server/src/routes/admin-relay.ts b/artifacts/api-server/src/routes/admin-relay.ts index 7671cec..d268312 100644 --- a/artifacts/api-server/src/routes/admin-relay.ts +++ b/artifacts/api-server/src/routes/admin-relay.ts @@ -15,7 +15,7 @@ import { Router, type Request, type Response, type NextFunction } from "express"; import { makeLogger } from "../lib/logger.js"; import { relayAccountService } from "../lib/relay-accounts.js"; -import { RELAY_ACCESS_LEVELS, type RelayAccessLevel, db, relayEventQueue, relayAccounts } from "@workspace/db"; +import { RELAY_ACCESS_LEVELS, type RelayAccessLevel, db, relayEventQueue, relayAccounts, nostrIdentities } from "@workspace/db"; import { and, eq, gte, inArray, sql } from "drizzle-orm"; const logger = makeLogger("admin-relay"); @@ -118,8 +118,22 @@ router.get("/admin/relay/stats", requireAdmin, async (_req: Request, res: Respon // ── GET /admin/relay/accounts ───────────────────────────────────────────────── router.get("/admin/relay/accounts", requireAdmin, async (_req: Request, res: Response) => { - const accounts = await relayAccountService.list(); - res.json({ accounts }); + // LEFT JOIN nostr_identities to include trustTier per account. + const rows = await db + .select({ + pubkey: relayAccounts.pubkey, + accessLevel: relayAccounts.accessLevel, + grantedBy: relayAccounts.grantedBy, + notes: relayAccounts.notes, + grantedAt: relayAccounts.grantedAt, + revokedAt: relayAccounts.revokedAt, + trustTier: nostrIdentities.tier, + }) + .from(relayAccounts) + .leftJoin(nostrIdentities, eq(relayAccounts.pubkey, nostrIdentities.pubkey)) + .orderBy(relayAccounts.grantedAt); + + res.json({ accounts: rows }); }); // ── POST /admin/relay/accounts/:pubkey/grant ──────────────────────────────────