@voyantjs/bookings 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { bookingsSupplierExtension } from "./extensions/suppliers.js";
4
4
  export { type BookingPiiAuditEvent, type BookingPiiServiceOptions, createBookingPiiService, type UpsertBookingParticipantTravelDetailInput, } from "./pii.js";
5
5
  export type { ConvertProductData } from "./service.js";
6
6
  export { bookingsService } from "./service.js";
7
+ export { type AddBookingGroupMemberInput, type BookingGroupListQuery, type BookingGroupMemberWithBooking, bookingGroupsService, type CreateBookingGroupInput, type UpdateBookingGroupInput, } from "./service-groups.js";
7
8
  export { type ExpireStaleBookingHoldsInput, type ExpireStaleBookingHoldsResult, expireStaleBookingHolds, } from "./tasks/index.js";
8
9
  export declare const bookingLinkable: LinkableDefinition;
9
10
  export declare const bookingsLinkable: {
@@ -16,8 +17,8 @@ export type { PublicBookingRoutes } from "./routes-public.js";
16
17
  export { publicBookingRoutes } from "./routes-public.js";
17
18
  export type { BookingParticipantDietary, BookingParticipantIdentity, BookingParticipantTravelDetail, DecryptedBookingParticipantTravelDetail, NewBookingParticipantTravelDetail, } from "./schema/travel-details.js";
18
19
  export { bookingParticipantDietarySchema, bookingParticipantIdentitySchema, bookingParticipantTravelDetailInsertSchema, bookingParticipantTravelDetailSelectSchema, bookingParticipantTravelDetails, bookingParticipantTravelDetailUpdateSchema, decryptedBookingParticipantTravelDetailSchema, } from "./schema/travel-details.js";
19
- export type { Booking, BookingActivity, BookingAllocation, BookingDocument, BookingFulfillment, BookingItem, BookingItemParticipant, BookingNote, BookingParticipant, BookingPassenger, BookingPiiAccessLog, BookingRedemptionEvent, BookingSessionState, BookingSupplierStatus, NewBooking, NewBookingActivity, NewBookingAllocation, NewBookingDocument, NewBookingFulfillment, NewBookingItem, NewBookingItemParticipant, NewBookingNote, NewBookingParticipant, NewBookingPassenger, NewBookingPiiAccessLog, NewBookingRedemptionEvent, NewBookingSessionState, NewBookingSupplierStatus, } from "./schema.js";
20
- export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingItemParticipants, bookingItems, bookingNotes, bookingParticipants, bookingPassengers, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingSupplierStatuses, bookings, } from "./schema.js";
20
+ export type { Booking, BookingActivity, BookingAllocation, BookingDocument, BookingFulfillment, BookingGroup, BookingGroupMember, BookingItem, BookingItemParticipant, BookingNote, BookingParticipant, BookingPassenger, BookingPiiAccessLog, BookingRedemptionEvent, BookingSessionState, BookingSupplierStatus, NewBooking, NewBookingActivity, NewBookingAllocation, NewBookingDocument, NewBookingFulfillment, NewBookingGroup, NewBookingGroupMember, NewBookingItem, NewBookingItemParticipant, NewBookingNote, NewBookingParticipant, NewBookingPassenger, NewBookingPiiAccessLog, NewBookingRedemptionEvent, NewBookingSessionState, NewBookingSupplierStatus, } from "./schema.js";
21
+ export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups, bookingItemParticipants, bookingItems, bookingNotes, bookingParticipants, bookingPassengers, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingSupplierStatuses, bookings, } from "./schema.js";
21
22
  export { publicBookingsService } from "./service-public.js";
22
- export { bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertBookingSchema, insertParticipantSchema, insertPassengerSchema, insertSupplierStatusSchema, internalBookingOverviewLookupQuerySchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateParticipantSchema, updatePassengerSchema, updateSupplierStatusSchema, upsertParticipantTravelDetailsSchema, } from "./validation.js";
23
+ export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertBookingSchema, insertParticipantSchema, insertPassengerSchema, insertSupplierStatusSchema, internalBookingOverviewLookupQuerySchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateParticipantSchema, updatePassengerSchema, updateSupplierStatusSchema, upsertParticipantTravelDetailsSchema, } from "./validation.js";
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { publicBookingRoutes } from "./routes-public.js";
3
3
  export { bookingsSupplierExtension } from "./extensions/suppliers.js";
4
4
  export { createBookingPiiService, } from "./pii.js";
5
5
  export { bookingsService } from "./service.js";
6
+ export { bookingGroupsService, } from "./service-groups.js";
6
7
  export { expireStaleBookingHolds, } from "./tasks/index.js";
7
8
  export const bookingLinkable = {
8
9
  module: "bookings",
@@ -25,6 +26,6 @@ export const bookingsHonoModule = {
25
26
  };
26
27
  export { publicBookingRoutes } from "./routes-public.js";
27
28
  export { bookingParticipantDietarySchema, bookingParticipantIdentitySchema, bookingParticipantTravelDetailInsertSchema, bookingParticipantTravelDetailSelectSchema, bookingParticipantTravelDetails, bookingParticipantTravelDetailUpdateSchema, decryptedBookingParticipantTravelDetailSchema, } from "./schema/travel-details.js";
28
- export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingItemParticipants, bookingItems, bookingNotes, bookingParticipants, bookingPassengers, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingSupplierStatuses, bookings, } from "./schema.js";
29
+ export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups, bookingItemParticipants, bookingItems, bookingNotes, bookingParticipants, bookingPassengers, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingSupplierStatuses, bookings, } from "./schema.js";
29
30
  export { publicBookingsService } from "./service-public.js";
30
- export { bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertBookingSchema, insertParticipantSchema, insertPassengerSchema, insertSupplierStatusSchema, internalBookingOverviewLookupQuerySchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateParticipantSchema, updatePassengerSchema, updateSupplierStatusSchema, upsertParticipantTravelDetailsSchema, } from "./validation.js";
31
+ export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertBookingSchema, insertParticipantSchema, insertPassengerSchema, insertSupplierStatusSchema, internalBookingOverviewLookupQuerySchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateParticipantSchema, updatePassengerSchema, updateSupplierStatusSchema, upsertParticipantTravelDetailsSchema, } from "./validation.js";
@@ -0,0 +1,354 @@
1
+ import { bookingGroupsService } from "./service-groups.js";
2
+ type Env = {
3
+ Variables: {
4
+ db: Parameters<typeof bookingGroupsService.listBookingGroups>[0];
5
+ userId?: string;
6
+ };
7
+ };
8
+ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env, {
9
+ "/": {
10
+ $get: {
11
+ input: {};
12
+ output: {
13
+ data: {
14
+ id: string;
15
+ productId: string | null;
16
+ createdAt: string;
17
+ updatedAt: string;
18
+ metadata: {
19
+ [x: string]: import("hono/utils/types").JSONValue;
20
+ } | null;
21
+ kind: "other" | "shared_room";
22
+ label: string;
23
+ primaryBookingId: string | null;
24
+ optionUnitId: string | null;
25
+ }[];
26
+ total: number;
27
+ limit: number;
28
+ offset: number;
29
+ };
30
+ outputFormat: "json";
31
+ status: import("hono/utils/http-status").ContentfulStatusCode;
32
+ };
33
+ };
34
+ } & {
35
+ "/": {
36
+ $post: {
37
+ input: {};
38
+ output: {
39
+ data: {
40
+ id: string;
41
+ productId: string | null;
42
+ createdAt: string;
43
+ updatedAt: string;
44
+ metadata: {
45
+ [x: string]: import("hono/utils/types").JSONValue;
46
+ } | null;
47
+ kind: "other" | "shared_room";
48
+ label: string;
49
+ primaryBookingId: string | null;
50
+ optionUnitId: string | null;
51
+ };
52
+ };
53
+ outputFormat: "json";
54
+ status: 201;
55
+ };
56
+ };
57
+ } & {
58
+ "/:id": {
59
+ $get: {
60
+ input: {
61
+ param: {
62
+ id: string;
63
+ };
64
+ };
65
+ output: {
66
+ error: string;
67
+ };
68
+ outputFormat: "json";
69
+ status: 404;
70
+ } | {
71
+ input: {
72
+ param: {
73
+ id: string;
74
+ };
75
+ };
76
+ output: {
77
+ data: {
78
+ members: {
79
+ id: string;
80
+ createdAt: string;
81
+ role: "primary" | "shared";
82
+ bookingId: string;
83
+ groupId: string;
84
+ booking: {
85
+ id: string;
86
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
87
+ createdAt: string;
88
+ updatedAt: string;
89
+ organizationId: string | null;
90
+ startDate: string | null;
91
+ endDate: string | null;
92
+ bookingNumber: string;
93
+ personId: string | null;
94
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
95
+ externalBookingRef: string | null;
96
+ communicationLanguage: string | null;
97
+ sellCurrency: string;
98
+ baseCurrency: string | null;
99
+ sellAmountCents: number | null;
100
+ baseSellAmountCents: number | null;
101
+ costAmountCents: number | null;
102
+ baseCostAmountCents: number | null;
103
+ marginPercent: number | null;
104
+ pax: number | null;
105
+ internalNotes: string | null;
106
+ holdExpiresAt: string | null;
107
+ confirmedAt: string | null;
108
+ expiredAt: string | null;
109
+ cancelledAt: string | null;
110
+ completedAt: string | null;
111
+ redeemedAt: string | null;
112
+ } | null;
113
+ }[];
114
+ id: string;
115
+ productId: string | null;
116
+ createdAt: string;
117
+ updatedAt: string;
118
+ metadata: {
119
+ [x: string]: import("hono/utils/types").JSONValue;
120
+ } | null;
121
+ kind: "other" | "shared_room";
122
+ label: string;
123
+ primaryBookingId: string | null;
124
+ optionUnitId: string | null;
125
+ };
126
+ };
127
+ outputFormat: "json";
128
+ status: import("hono/utils/http-status").ContentfulStatusCode;
129
+ };
130
+ };
131
+ } & {
132
+ "/:id": {
133
+ $patch: {
134
+ input: {
135
+ param: {
136
+ id: string;
137
+ };
138
+ };
139
+ output: {
140
+ error: string;
141
+ };
142
+ outputFormat: "json";
143
+ status: 404;
144
+ } | {
145
+ input: {
146
+ param: {
147
+ id: string;
148
+ };
149
+ };
150
+ output: {
151
+ data: {
152
+ id: string;
153
+ productId: string | null;
154
+ createdAt: string;
155
+ updatedAt: string;
156
+ metadata: {
157
+ [x: string]: import("hono/utils/types").JSONValue;
158
+ } | null;
159
+ kind: "other" | "shared_room";
160
+ label: string;
161
+ primaryBookingId: string | null;
162
+ optionUnitId: string | null;
163
+ };
164
+ };
165
+ outputFormat: "json";
166
+ status: import("hono/utils/http-status").ContentfulStatusCode;
167
+ };
168
+ };
169
+ } & {
170
+ "/:id": {
171
+ $delete: {
172
+ input: {
173
+ param: {
174
+ id: string;
175
+ };
176
+ };
177
+ output: {
178
+ error: string;
179
+ };
180
+ outputFormat: "json";
181
+ status: 404;
182
+ } | {
183
+ input: {
184
+ param: {
185
+ id: string;
186
+ };
187
+ };
188
+ output: {
189
+ success: true;
190
+ };
191
+ outputFormat: "json";
192
+ status: import("hono/utils/http-status").ContentfulStatusCode;
193
+ };
194
+ };
195
+ } & {
196
+ "/:id/members": {
197
+ $get: {
198
+ input: {
199
+ param: {
200
+ id: string;
201
+ };
202
+ };
203
+ output: {
204
+ data: {
205
+ id: string;
206
+ createdAt: string;
207
+ role: "primary" | "shared";
208
+ bookingId: string;
209
+ groupId: string;
210
+ booking: {
211
+ id: string;
212
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
213
+ createdAt: string;
214
+ updatedAt: string;
215
+ organizationId: string | null;
216
+ startDate: string | null;
217
+ endDate: string | null;
218
+ bookingNumber: string;
219
+ personId: string | null;
220
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
221
+ externalBookingRef: string | null;
222
+ communicationLanguage: string | null;
223
+ sellCurrency: string;
224
+ baseCurrency: string | null;
225
+ sellAmountCents: number | null;
226
+ baseSellAmountCents: number | null;
227
+ costAmountCents: number | null;
228
+ baseCostAmountCents: number | null;
229
+ marginPercent: number | null;
230
+ pax: number | null;
231
+ internalNotes: string | null;
232
+ holdExpiresAt: string | null;
233
+ confirmedAt: string | null;
234
+ expiredAt: string | null;
235
+ cancelledAt: string | null;
236
+ completedAt: string | null;
237
+ redeemedAt: string | null;
238
+ } | null;
239
+ }[];
240
+ };
241
+ outputFormat: "json";
242
+ status: import("hono/utils/http-status").ContentfulStatusCode;
243
+ };
244
+ };
245
+ } & {
246
+ "/:id/members": {
247
+ $post: {
248
+ input: {
249
+ param: {
250
+ id: string;
251
+ };
252
+ };
253
+ output: {
254
+ error: string;
255
+ };
256
+ outputFormat: "json";
257
+ status: 404;
258
+ } | {
259
+ input: {
260
+ param: {
261
+ id: string;
262
+ };
263
+ };
264
+ output: {
265
+ error: string;
266
+ currentGroupId: string;
267
+ };
268
+ outputFormat: "json";
269
+ status: 409;
270
+ } | {
271
+ input: {
272
+ param: {
273
+ id: string;
274
+ };
275
+ };
276
+ output: {
277
+ data: {
278
+ id: string;
279
+ createdAt: string;
280
+ role: "primary" | "shared";
281
+ bookingId: string;
282
+ groupId: string;
283
+ };
284
+ };
285
+ outputFormat: "json";
286
+ status: 201;
287
+ };
288
+ };
289
+ } & {
290
+ "/:id/members/:bookingId": {
291
+ $delete: {
292
+ input: {
293
+ param: {
294
+ id: string;
295
+ } & {
296
+ bookingId: string;
297
+ };
298
+ };
299
+ output: {
300
+ error: string;
301
+ };
302
+ outputFormat: "json";
303
+ status: 404;
304
+ } | {
305
+ input: {
306
+ param: {
307
+ id: string;
308
+ } & {
309
+ bookingId: string;
310
+ };
311
+ };
312
+ output: {
313
+ success: true;
314
+ };
315
+ outputFormat: "json";
316
+ status: import("hono/utils/http-status").ContentfulStatusCode;
317
+ };
318
+ };
319
+ } & {
320
+ "/:id/passengers": {
321
+ $get: {
322
+ input: {
323
+ param: {
324
+ id: string;
325
+ };
326
+ };
327
+ output: {
328
+ data: {
329
+ id: string;
330
+ notes: string | null;
331
+ createdAt: string;
332
+ updatedAt: string;
333
+ email: string | null;
334
+ firstName: string;
335
+ lastName: string;
336
+ personId: string | null;
337
+ bookingId: string;
338
+ participantType: "staff" | "other" | "traveler" | "booker" | "contact" | "occupant";
339
+ travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
340
+ phone: string | null;
341
+ preferredLanguage: string | null;
342
+ accessibilityNeeds: string | null;
343
+ specialRequests: string | null;
344
+ isPrimary: boolean;
345
+ }[];
346
+ };
347
+ outputFormat: "json";
348
+ status: import("hono/utils/http-status").ContentfulStatusCode;
349
+ };
350
+ };
351
+ }, "/", "/:id/passengers">;
352
+ export type BookingGroupRoutes = typeof bookingGroupRoutes;
353
+ export {};
354
+ //# sourceMappingURL=routes-groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes-groups.d.ts","sourceRoot":"","sources":["../src/routes-groups.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAQ1D,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA4E3B,CAAA;AAEJ,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { Hono } from "hono";
2
+ import { bookingGroupsService } from "./service-groups.js";
3
+ import { addBookingGroupMemberSchema, bookingGroupListQuerySchema, insertBookingGroupSchema, updateBookingGroupSchema, } from "./validation.js";
4
+ export const bookingGroupRoutes = new Hono()
5
+ .get("/", async (c) => {
6
+ const query = bookingGroupListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
7
+ return c.json(await bookingGroupsService.listBookingGroups(c.get("db"), query));
8
+ })
9
+ .post("/", async (c) => {
10
+ const row = await bookingGroupsService.createBookingGroup(c.get("db"), insertBookingGroupSchema.parse(await c.req.json()));
11
+ return c.json({ data: row }, 201);
12
+ })
13
+ .get("/:id", async (c) => {
14
+ const row = await bookingGroupsService.getBookingGroupById(c.get("db"), c.req.param("id"));
15
+ if (!row)
16
+ return c.json({ error: "Booking group not found" }, 404);
17
+ const members = await bookingGroupsService.listGroupMembers(c.get("db"), row.id);
18
+ return c.json({ data: { ...row, members } });
19
+ })
20
+ .patch("/:id", async (c) => {
21
+ const row = await bookingGroupsService.updateBookingGroup(c.get("db"), c.req.param("id"), updateBookingGroupSchema.parse(await c.req.json()));
22
+ if (!row)
23
+ return c.json({ error: "Booking group not found" }, 404);
24
+ return c.json({ data: row });
25
+ })
26
+ .delete("/:id", async (c) => {
27
+ const row = await bookingGroupsService.deleteBookingGroup(c.get("db"), c.req.param("id"));
28
+ if (!row)
29
+ return c.json({ error: "Booking group not found" }, 404);
30
+ return c.json({ success: true });
31
+ })
32
+ .get("/:id/members", async (c) => {
33
+ const members = await bookingGroupsService.listGroupMembers(c.get("db"), c.req.param("id"));
34
+ return c.json({ data: members });
35
+ })
36
+ .post("/:id/members", async (c) => {
37
+ const result = await bookingGroupsService.addGroupMember(c.get("db"), c.req.param("id"), addBookingGroupMemberSchema.parse(await c.req.json()));
38
+ if (result.status === "group_not_found") {
39
+ return c.json({ error: "Booking group not found" }, 404);
40
+ }
41
+ if (result.status === "booking_not_found") {
42
+ return c.json({ error: "Booking not found" }, 404);
43
+ }
44
+ if (result.status === "already_in_group") {
45
+ return c.json({
46
+ error: "Booking is already in a group",
47
+ currentGroupId: result.currentGroupId,
48
+ }, 409);
49
+ }
50
+ return c.json({ data: result.member }, 201);
51
+ })
52
+ .delete("/:id/members/:bookingId", async (c) => {
53
+ const row = await bookingGroupsService.removeGroupMember(c.get("db"), c.req.param("id"), c.req.param("bookingId"));
54
+ if (!row)
55
+ return c.json({ error: "Membership not found" }, 404);
56
+ return c.json({ success: true });
57
+ })
58
+ .get("/:id/passengers", async (c) => {
59
+ const passengers = await bookingGroupsService.listGroupBookingPassengers(c.get("db"), c.req.param("id"));
60
+ return c.json({ data: passengers });
61
+ });