/** * GET /api/chat/history?peer=[&before=] * Returns the 1:1 conversation between the caller and `peer`, oldest → newest. * Gated to staff (IsSystemUser, non-limited role) — see chatAccess.gateFromEvent. */ import { gateFromEvent } from '../../utils/chatAccess' import { getConversation } from '../../utils/chatDb' export default defineEventHandler(async (event) => { const config = useRuntimeConfig() if (config.chatEnabled !== true) { setResponseStatus(event, 404) return { error: 'chat disabled' } } let userId: number try { ({ userId } = await gateFromEvent(event)) } catch (err: any) { setResponseStatus(event, err?.statusCode || 403) return { error: 'forbidden' } } const query = getQuery(event) const peer = Number(query.peer) if (!peer) { setResponseStatus(event, 400) return { error: 'peer required' } } const before = query.before ? Number(query.before) : null return { records: getConversation(userId, peer, 50, before) } })