From caae10bcac37ecf49c4792d173df405fcb68d7e5 Mon Sep 17 00:00:00 2001 From: Bas van den Aakster Date: Fri, 12 Dec 2025 21:09:15 +0100 Subject: [PATCH] Fix: Pass offers to createService method The createService storage method expects offers in the request, but publishService wasn't passing them. This caused undefined error when d1.ts tried to call request.offers.map(). Now correctly passes offers to createService which handles creating both the service and all offers atomically. --- src/rpc.ts | 49 +++++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/src/rpc.ts b/src/rpc.ts index 2c5f9a2..cf39472 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -365,7 +365,7 @@ const handlers: Record = { ); } - // Create service + // Create service with offers const now = Date.now(); const offerTtl = ttl !== undefined @@ -376,39 +376,32 @@ const handlers: Record = { : config.offerDefaultTtl; const expiresAt = now + offerTtl; - const service = await storage.createService({ + // Prepare offer requests with TTL + const offerRequests = offers.map(offer => ({ username, serviceFqn, - serviceName: parsed.service, - version: parsed.version, + sdp: offer.sdp, expiresAt, + })); + + const result = await storage.createService({ + serviceFqn, + expiresAt, + offers: offerRequests, }); - // Create offers - const createdOffers = []; - for (const offer of offers) { - const createdOffer = await storage.createOffer({ - username, - serviceId: service.id, - serviceFqn, - sdp: offer.sdp, - ttl: offerTtl, - }); - createdOffers.push({ - offerId: createdOffer.id, - sdp: createdOffer.sdp, - createdAt: createdOffer.createdAt, - expiresAt: createdOffer.expiresAt, - }); - } - return { - serviceId: service.id, - username: service.username, - serviceFqn: service.serviceFqn, - offers: createdOffers, - createdAt: service.createdAt, - expiresAt: service.expiresAt, + serviceId: result.service.id, + username: result.service.username, + serviceFqn: result.service.serviceFqn, + offers: result.offers.map(offer => ({ + offerId: offer.id, + sdp: offer.sdp, + createdAt: offer.createdAt, + expiresAt: offer.expiresAt, + })), + createdAt: result.service.createdAt, + expiresAt: result.service.expiresAt, }; },