createRoom.ts 569 B

1234567891011121314151617
  1. import { brivenError, mutation, type Ctx } from '@briven/cli/server';
  2. import { ulid } from '@briven/shared';
  3. interface Args {
  4. name: string;
  5. }
  6. export default mutation(async (ctx: Ctx, args: Args) => {
  7. const name = args.name?.trim();
  8. if (!name) throw new brivenError('validation_failed', 'name is required', { status: 400 });
  9. if (name.length > 64)
  10. throw new brivenError('validation_failed', 'name too long (max 64 chars)', { status: 400 });
  11. const id = ulid('rm');
  12. const [row] = await ctx.db('rooms').insert({ id, name }).returning();
  13. return row;
  14. });