listMessages.ts 540 B

12345678910111213141516171819
  1. import { brivenError, query, type Ctx } from '@briven/cli/server';
  2. interface Args {
  3. roomId: string;
  4. limit?: number;
  5. }
  6. export default query(async (ctx: Ctx, args: Args) => {
  7. if (!args.roomId)
  8. throw new brivenError('validation_failed', 'roomId is required', { status: 400 });
  9. const limit = Math.min(Math.max(args.limit ?? 50, 1), 200);
  10. return ctx
  11. .db('messages')
  12. .select(['id', 'roomId', 'authorName', 'body', 'createdAt'])
  13. .where({ roomId: args.roomId })
  14. .orderBy('createdAt', 'desc')
  15. .limit(limit);
  16. });