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