@@ -8,7 +8,14 @@ import {
88}  from  "common/types/roomRequest.js" ; 
99import  {  AppRoles  }  from  "common/roles.js" ; 
1010import  {  zodToJsonSchema  }  from  "zod-to-json-schema" ; 
11- import  {  randomUUID  }  from  "crypto" ; 
11+ import  { 
12+   BaseError , 
13+   DatabaseInsertError , 
14+   InternalServerError , 
15+ }  from  "common/errors/index.js" ; 
16+ import  {  PutItemCommand  }  from  "@aws-sdk/client-dynamodb" ; 
17+ import  {  genericConfig  }  from  "common/config.js" ; 
18+ import  {  marshall  }  from  "@aws-sdk/util-dynamodb" ; 
1219
1320const  roomRequestRoutes : FastifyPluginAsync  =  async  ( fastify ,  _options )  =>  { 
1421  await  fastify . register ( rateLimiter ,  { 
@@ -30,9 +37,31 @@ const roomRequestRoutes: FastifyPluginAsync = async (fastify, _options) => {
3037      } , 
3138    } , 
3239    async  ( request ,  reply )  =>  { 
33-       const  id  =  randomUUID ( ) . toString ( ) ; 
40+       const  requestId  =  request . id ; 
41+       if  ( ! request . username )  { 
42+         throw  new  InternalServerError ( { 
43+           message : "Could not retrieve username." , 
44+         } ) ; 
45+       } 
46+       const  body  =  {  ...request . body ,  requestId,  userId : request . username  } ; 
47+       try  { 
48+         await  fastify . dynamoClient . send ( 
49+           new  PutItemCommand ( { 
50+             TableName : genericConfig . RoomRequestsTableName , 
51+             Item : marshall ( body ) , 
52+           } ) , 
53+         ) ; 
54+       }  catch  ( e )  { 
55+         if  ( e  instanceof  BaseError )  { 
56+           throw  e ; 
57+         } 
58+         request . log . error ( e ) ; 
59+         throw  new  DatabaseInsertError ( { 
60+           message : "Could not save room request." , 
61+         } ) ; 
62+       } 
3463      reply . status ( 201 ) . send ( { 
35-         id, 
64+         id :  requestId , 
3665        status : RoomRequestStatus . CREATED , 
3766      } ) ; 
3867    } , 
0 commit comments