@voyantjs/bookings 0.6.8 → 0.7.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/README.md +2 -2
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/pii.d.ts +10 -9
- package/dist/pii.d.ts.map +1 -1
- package/dist/pii.js +33 -33
- package/dist/products-ref.d.ts +93 -1
- package/dist/products-ref.d.ts.map +1 -1
- package/dist/products-ref.js +12 -1
- package/dist/routes-groups.d.ts +25 -5
- package/dist/routes-groups.d.ts.map +1 -1
- package/dist/routes-groups.js +3 -3
- package/dist/routes-public.d.ts +19 -21
- package/dist/routes-public.d.ts.map +1 -1
- package/dist/routes-public.js +1 -1
- package/dist/routes-shared.d.ts +3 -2
- package/dist/routes-shared.d.ts.map +1 -1
- package/dist/routes.d.ts +283 -188
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +89 -102
- package/dist/schema/travel-details.d.ts +27 -27
- package/dist/schema/travel-details.d.ts.map +1 -1
- package/dist/schema/travel-details.js +19 -14
- package/dist/schema-core.d.ts +194 -305
- package/dist/schema-core.d.ts.map +1 -1
- package/dist/schema-core.js +19 -10
- package/dist/schema-items.d.ts +15 -15
- package/dist/schema-items.d.ts.map +1 -1
- package/dist/schema-items.js +12 -12
- package/dist/schema-operations.d.ts +1 -1
- package/dist/schema-operations.js +3 -3
- package/dist/schema-relations.d.ts +26 -9
- package/dist/schema-relations.d.ts.map +1 -1
- package/dist/schema-relations.js +36 -21
- package/dist/schema-shared.d.ts +3 -2
- package/dist/schema-shared.d.ts.map +1 -1
- package/dist/schema-shared.js +4 -5
- package/dist/schema-staff.d.ts +267 -0
- package/dist/schema-staff.d.ts.map +1 -0
- package/dist/schema-staff.js +31 -0
- package/dist/schema.d.ts +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +1 -0
- package/dist/service-groups.d.ts +3 -7
- package/dist/service-groups.d.ts.map +1 -1
- package/dist/service-groups.js +6 -10
- package/dist/service-public.d.ts +102 -55
- package/dist/service-public.d.ts.map +1 -1
- package/dist/service-public.js +119 -54
- package/dist/service.d.ts +327 -104
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +530 -130
- package/dist/transactions-ref.d.ts +930 -66
- package/dist/transactions-ref.d.ts.map +1 -1
- package/dist/transactions-ref.js +56 -2
- package/dist/validation-public.d.ts +29 -69
- package/dist/validation-public.d.ts.map +1 -1
- package/dist/validation-public.js +21 -20
- package/dist/validation-shared.d.ts +4 -5
- package/dist/validation-shared.d.ts.map +1 -1
- package/dist/validation-shared.js +2 -10
- package/dist/validation.d.ts +248 -44
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +103 -28
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @voyantjs/bookings
|
|
2
2
|
|
|
3
|
-
Bookings module for Voyant. Manages booking lifecycle with
|
|
3
|
+
Bookings module for Voyant. Manages booking lifecycle with travelers, supplier statuses, activity log, and notes. Uses `personId` + `organizationId` from CRM as client snapshot.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -37,7 +37,7 @@ room/unit selection back onto the booking session totals.
|
|
|
37
37
|
## Entities
|
|
38
38
|
|
|
39
39
|
- **Bookings** (`book`)
|
|
40
|
-
- **Booking
|
|
40
|
+
- **Booking travelers** (`bkps`)
|
|
41
41
|
- **Booking supplier statuses** (`bkss`)
|
|
42
42
|
- **Booking activity log** (`bkal`)
|
|
43
43
|
- **Booking notes** (`bnot`)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { LinkableDefinition, Module } from "@voyantjs/core";
|
|
2
2
|
import type { HonoModule } from "@voyantjs/hono/module";
|
|
3
3
|
export { bookingsSupplierExtension } from "./extensions/suppliers.js";
|
|
4
|
-
export { type BookingPiiAuditEvent, type BookingPiiServiceOptions, createBookingPiiService, type
|
|
4
|
+
export { type BookingPiiAuditEvent, type BookingPiiService, type BookingPiiServiceOptions, createBookingPiiService, type UpsertBookingTravelerTravelDetailInput, } 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
|
+
export { type AddBookingGroupMemberInput, type BookingGroupListQuery, type BookingGroupMemberWithBooking, bookingGroupsService, type CreateBookingGroupInput, listGroupBookingTravelers, type UpdateBookingGroupInput, } from "./service-groups.js";
|
|
8
8
|
export { type ExpireStaleBookingHoldsInput, type ExpireStaleBookingHoldsResult, expireStaleBookingHolds, } from "./tasks/index.js";
|
|
9
9
|
export declare const bookingLinkable: LinkableDefinition;
|
|
10
10
|
export declare const bookingsLinkable: {
|
|
@@ -18,10 +18,10 @@ export { BOOKING_ROUTE_RUNTIME_CONTAINER_KEY, buildBookingRouteRuntime, } from "
|
|
|
18
18
|
export type { BookingRoutes } from "./routes.js";
|
|
19
19
|
export type { PublicBookingRoutes } from "./routes-public.js";
|
|
20
20
|
export { publicBookingRoutes } from "./routes-public.js";
|
|
21
|
-
export type {
|
|
22
|
-
export {
|
|
23
|
-
export type { Booking, BookingActivity, BookingAllocation, BookingDocument, BookingFulfillment, BookingGroup, BookingGroupMember, BookingItem,
|
|
24
|
-
export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups,
|
|
25
|
-
export { publicBookingsService } from "./service-public.js";
|
|
26
|
-
export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema,
|
|
21
|
+
export type { BookingTravelerDietary, BookingTravelerIdentity, BookingTravelerTravelDetail, DecryptedBookingTravelerTravelDetail, NewBookingTravelerTravelDetail, } from "./schema/travel-details.js";
|
|
22
|
+
export { bookingTravelerDietarySchema, bookingTravelerIdentitySchema, bookingTravelerTravelDetailInsertSchema, bookingTravelerTravelDetailSelectSchema, bookingTravelerTravelDetails, bookingTravelerTravelDetailUpdateSchema, decryptedBookingTravelerTravelDetailSchema, } from "./schema/travel-details.js";
|
|
23
|
+
export type { Booking, BookingActivity, BookingAllocation, BookingDocument, BookingFulfillment, BookingGroup, BookingGroupMember, BookingItem, BookingItemTraveler, BookingNote, BookingPiiAccessLog, BookingRedemptionEvent, BookingSessionState, BookingStaffAssignment, BookingSupplierStatus, BookingTraveler, NewBooking, NewBookingActivity, NewBookingAllocation, NewBookingDocument, NewBookingFulfillment, NewBookingGroup, NewBookingGroupMember, NewBookingItem, NewBookingItemTraveler, NewBookingNote, NewBookingPiiAccessLog, NewBookingRedemptionEvent, NewBookingSessionState, NewBookingStaffAssignment, NewBookingSupplierStatus, NewBookingTraveler, } from "./schema.js";
|
|
24
|
+
export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups, bookingItems, bookingItemTravelers, bookingNotes, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingStaffAssignments, bookingSupplierStatuses, bookings, bookingTravelers, } from "./schema.js";
|
|
25
|
+
export { publicBookingsService, resolveSessionPricingSnapshot } from "./service-public.js";
|
|
26
|
+
export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemSchema, insertBookingItemTravelerSchema, insertBookingNoteSchema, insertBookingSchema, insertBookingTravelerDocumentSchema, insertSupplierStatusSchema, insertTravelerSchema, internalBookingOverviewLookupQuerySchema, pricingPreviewSchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateSupplierStatusSchema, updateTravelerSchema, upsertTravelerTravelDetailsSchema, } from "./validation.js";
|
|
27
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAMvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAMvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,KAAK,sCAAsC,GAC5C,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AAEzB,eAAO,MAAM,eAAe,EAAE,kBAK7B,CAAA;AAED,eAAO,MAAM,gBAAgB;;CAE5B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,MAG5B,CAAA;AAED,wBAAgB,wBAAwB,IAAI,UAAU,CAiBrD;AAED,eAAO,MAAM,kBAAkB,EAAE,UAAuC,CAAA;AAExE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,mCAAmC,EACnC,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,oCAAoC,EACpC,8BAA8B,GAC/B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,uCAAuC,EACvC,uCAAuC,EACvC,4BAA4B,EAC5B,uCAAuC,EACvC,0CAA0C,GAC3C,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,gBAAgB,GACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAC1F,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,uBAAuB,EACvB,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,mCAAmC,EACnC,0BAA0B,EAC1B,oBAAoB,EACpB,wCAAwC,EACxC,oBAAoB,EACpB,sCAAsC,EACtC,kCAAkC,EAClC,qCAAqC,EACrC,uCAAuC,EACvC,wCAAwC,EACxC,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,6BAA6B,EAC7B,mCAAmC,EACnC,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAC9B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,iBAAiB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { publicBookingRoutes } from "./routes-public.js";
|
|
|
4
4
|
export { bookingsSupplierExtension } from "./extensions/suppliers.js";
|
|
5
5
|
export { createBookingPiiService, } from "./pii.js";
|
|
6
6
|
export { bookingsService } from "./service.js";
|
|
7
|
-
export { bookingGroupsService, } from "./service-groups.js";
|
|
7
|
+
export { bookingGroupsService, listGroupBookingTravelers, } from "./service-groups.js";
|
|
8
8
|
export { expireStaleBookingHolds, } from "./tasks/index.js";
|
|
9
9
|
export const bookingLinkable = {
|
|
10
10
|
module: "bookings",
|
|
@@ -36,7 +36,7 @@ export function createBookingsHonoModule() {
|
|
|
36
36
|
export const bookingsHonoModule = createBookingsHonoModule();
|
|
37
37
|
export { BOOKING_ROUTE_RUNTIME_CONTAINER_KEY, buildBookingRouteRuntime, } from "./route-runtime.js";
|
|
38
38
|
export { publicBookingRoutes } from "./routes-public.js";
|
|
39
|
-
export {
|
|
40
|
-
export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups,
|
|
41
|
-
export { publicBookingsService } from "./service-public.js";
|
|
42
|
-
export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema,
|
|
39
|
+
export { bookingTravelerDietarySchema, bookingTravelerIdentitySchema, bookingTravelerTravelDetailInsertSchema, bookingTravelerTravelDetailSelectSchema, bookingTravelerTravelDetails, bookingTravelerTravelDetailUpdateSchema, decryptedBookingTravelerTravelDetailSchema, } from "./schema/travel-details.js";
|
|
40
|
+
export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups, bookingItems, bookingItemTravelers, bookingNotes, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingStaffAssignments, bookingSupplierStatuses, bookings, bookingTravelers, } from "./schema.js";
|
|
41
|
+
export { publicBookingsService, resolveSessionPricingSnapshot } from "./service-public.js";
|
|
42
|
+
export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemSchema, insertBookingItemTravelerSchema, insertBookingNoteSchema, insertBookingSchema, insertBookingTravelerDocumentSchema, insertSupplierStatusSchema, insertTravelerSchema, internalBookingOverviewLookupQuerySchema, pricingPreviewSchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateSupplierStatusSchema, updateTravelerSchema, upsertTravelerTravelDetailsSchema, } from "./validation.js";
|
package/dist/pii.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { KeyRef, KmsProvider } from "@voyantjs/utils";
|
|
2
2
|
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
3
|
-
import { type
|
|
4
|
-
export interface
|
|
3
|
+
import { type DecryptedBookingTravelerTravelDetail } from "./schema/travel-details.js";
|
|
4
|
+
export interface UpsertBookingTravelerTravelDetailInput {
|
|
5
5
|
nationality?: string | null;
|
|
6
6
|
passportNumber?: string | null;
|
|
7
7
|
passportExpiry?: string | null;
|
|
@@ -11,7 +11,7 @@ export interface UpsertBookingParticipantTravelDetailInput {
|
|
|
11
11
|
}
|
|
12
12
|
export interface BookingPiiAuditEvent {
|
|
13
13
|
action: "encrypt" | "decrypt" | "delete";
|
|
14
|
-
|
|
14
|
+
travelerId: string;
|
|
15
15
|
actorId?: string | null;
|
|
16
16
|
}
|
|
17
17
|
export interface BookingPiiServiceOptions {
|
|
@@ -19,11 +19,12 @@ export interface BookingPiiServiceOptions {
|
|
|
19
19
|
keyRef?: KeyRef;
|
|
20
20
|
onAudit?: (event: BookingPiiAuditEvent) => void | Promise<void>;
|
|
21
21
|
}
|
|
22
|
-
export
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
export interface BookingPiiService {
|
|
23
|
+
getTravelerTravelDetails(db: PostgresJsDatabase, travelerId: string, actorId?: string | null): Promise<DecryptedBookingTravelerTravelDetail | null>;
|
|
24
|
+
upsertTravelerTravelDetails(db: PostgresJsDatabase, travelerId: string, input: UpsertBookingTravelerTravelDetailInput, actorId?: string | null): Promise<DecryptedBookingTravelerTravelDetail | null>;
|
|
25
|
+
deleteTravelerTravelDetails(db: PostgresJsDatabase, travelerId: string, actorId?: string | null): Promise<{
|
|
26
|
+
travelerId: string;
|
|
27
27
|
} | null>;
|
|
28
|
-
}
|
|
28
|
+
}
|
|
29
|
+
export declare function createBookingPiiService(options: BookingPiiServiceOptions): BookingPiiService;
|
|
29
30
|
//# sourceMappingURL=pii.d.ts.map
|
package/dist/pii.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../src/pii.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAIL,KAAK,
|
|
1
|
+
{"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../src/pii.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAIL,KAAK,oCAAoC,EAC1C,MAAM,4BAA4B,CAAA;AAGnC,MAAM,WAAW,sCAAsC;IACrD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,WAAW,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,wBAAwB,CACtB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;IACvD,2BAA2B,CACzB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,sCAAsC,EAC7C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;IACvD,2BAA2B,CACzB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;CAC1C;AAqGD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAuH5F"}
|
package/dist/pii.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { decryptOptionalJsonEnvelope, encryptOptionalJsonEnvelope } from "@voyantjs/utils";
|
|
2
2
|
import { eq } from "drizzle-orm";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { bookingTravelerDietarySchema, bookingTravelerIdentitySchema, bookingTravelerTravelDetails, } from "./schema/travel-details.js";
|
|
4
|
+
import { bookingTravelers } from "./schema.js";
|
|
5
5
|
function buildIdentityPayload(input) {
|
|
6
|
-
const payload =
|
|
6
|
+
const payload = bookingTravelerIdentitySchema.parse({
|
|
7
7
|
nationality: input.nationality ?? null,
|
|
8
8
|
passportNumber: input.passportNumber ?? null,
|
|
9
9
|
passportExpiry: input.passportExpiry ?? null,
|
|
@@ -18,7 +18,7 @@ function buildIdentityPayload(input) {
|
|
|
18
18
|
return payload;
|
|
19
19
|
}
|
|
20
20
|
function buildDietaryPayload(input) {
|
|
21
|
-
const payload =
|
|
21
|
+
const payload = bookingTravelerDietarySchema.parse({
|
|
22
22
|
dietaryRequirements: input.dietaryRequirements ?? null,
|
|
23
23
|
});
|
|
24
24
|
if (!payload.dietaryRequirements) {
|
|
@@ -26,17 +26,17 @@ function buildDietaryPayload(input) {
|
|
|
26
26
|
}
|
|
27
27
|
return payload;
|
|
28
28
|
}
|
|
29
|
-
async function loadExistingTravelDetails(db,
|
|
29
|
+
async function loadExistingTravelDetails(db, travelerId, options, keyRef) {
|
|
30
30
|
const [row] = await db
|
|
31
31
|
.select()
|
|
32
|
-
.from(
|
|
33
|
-
.where(eq(
|
|
32
|
+
.from(bookingTravelerTravelDetails)
|
|
33
|
+
.where(eq(bookingTravelerTravelDetails.travelerId, travelerId))
|
|
34
34
|
.limit(1);
|
|
35
35
|
if (!row) {
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
|
-
const identity = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.identityEncrypted,
|
|
39
|
-
const dietary = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.dietaryEncrypted,
|
|
38
|
+
const identity = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.identityEncrypted, bookingTravelerIdentitySchema);
|
|
39
|
+
const dietary = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.dietaryEncrypted, bookingTravelerDietarySchema);
|
|
40
40
|
return {
|
|
41
41
|
nationality: identity?.nationality ?? null,
|
|
42
42
|
passportNumber: identity?.passportNumber ?? null,
|
|
@@ -67,20 +67,20 @@ function mergeTravelDetailInput(existing, input) {
|
|
|
67
67
|
export function createBookingPiiService(options) {
|
|
68
68
|
const keyRef = options.keyRef ?? { keyType: "people" };
|
|
69
69
|
return {
|
|
70
|
-
async
|
|
70
|
+
async getTravelerTravelDetails(db, travelerId, actorId) {
|
|
71
71
|
const [row] = await db
|
|
72
72
|
.select()
|
|
73
|
-
.from(
|
|
74
|
-
.where(eq(
|
|
73
|
+
.from(bookingTravelerTravelDetails)
|
|
74
|
+
.where(eq(bookingTravelerTravelDetails.travelerId, travelerId))
|
|
75
75
|
.limit(1);
|
|
76
76
|
if (!row) {
|
|
77
77
|
return null;
|
|
78
78
|
}
|
|
79
|
-
const identity = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.identityEncrypted,
|
|
80
|
-
const dietary = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.dietaryEncrypted,
|
|
81
|
-
await options.onAudit?.({ action: "decrypt",
|
|
79
|
+
const identity = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.identityEncrypted, bookingTravelerIdentitySchema);
|
|
80
|
+
const dietary = await decryptOptionalJsonEnvelope(options.kms, keyRef, row.dietaryEncrypted, bookingTravelerDietarySchema);
|
|
81
|
+
await options.onAudit?.({ action: "decrypt", travelerId, actorId });
|
|
82
82
|
return {
|
|
83
|
-
|
|
83
|
+
travelerId: row.travelerId,
|
|
84
84
|
nationality: identity?.nationality ?? null,
|
|
85
85
|
passportNumber: identity?.passportNumber ?? null,
|
|
86
86
|
passportExpiry: identity?.passportExpiry ?? null,
|
|
@@ -91,31 +91,31 @@ export function createBookingPiiService(options) {
|
|
|
91
91
|
updatedAt: row.updatedAt,
|
|
92
92
|
};
|
|
93
93
|
},
|
|
94
|
-
async
|
|
95
|
-
const [
|
|
96
|
-
.select({ id:
|
|
97
|
-
.from(
|
|
98
|
-
.where(eq(
|
|
94
|
+
async upsertTravelerTravelDetails(db, travelerId, input, actorId) {
|
|
95
|
+
const [traveler] = await db
|
|
96
|
+
.select({ id: bookingTravelers.id })
|
|
97
|
+
.from(bookingTravelers)
|
|
98
|
+
.where(eq(bookingTravelers.id, travelerId))
|
|
99
99
|
.limit(1);
|
|
100
|
-
if (!
|
|
100
|
+
if (!traveler) {
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
|
-
const existing = await loadExistingTravelDetails(db,
|
|
103
|
+
const existing = await loadExistingTravelDetails(db, travelerId, options, keyRef);
|
|
104
104
|
const mergedInput = mergeTravelDetailInput(existing, input);
|
|
105
105
|
const identityEncrypted = await encryptOptionalJsonEnvelope(options.kms, keyRef, buildIdentityPayload(mergedInput));
|
|
106
106
|
const dietaryEncrypted = await encryptOptionalJsonEnvelope(options.kms, keyRef, buildDietaryPayload(mergedInput));
|
|
107
107
|
const now = new Date();
|
|
108
108
|
await db
|
|
109
|
-
.insert(
|
|
109
|
+
.insert(bookingTravelerTravelDetails)
|
|
110
110
|
.values({
|
|
111
|
-
|
|
111
|
+
travelerId,
|
|
112
112
|
identityEncrypted,
|
|
113
113
|
dietaryEncrypted,
|
|
114
114
|
isLeadTraveler: mergedInput.isLeadTraveler ?? false,
|
|
115
115
|
updatedAt: now,
|
|
116
116
|
})
|
|
117
117
|
.onConflictDoUpdate({
|
|
118
|
-
target:
|
|
118
|
+
target: bookingTravelerTravelDetails.travelerId,
|
|
119
119
|
set: {
|
|
120
120
|
identityEncrypted,
|
|
121
121
|
dietaryEncrypted,
|
|
@@ -123,16 +123,16 @@ export function createBookingPiiService(options) {
|
|
|
123
123
|
updatedAt: now,
|
|
124
124
|
},
|
|
125
125
|
});
|
|
126
|
-
await options.onAudit?.({ action: "encrypt",
|
|
127
|
-
return this.
|
|
126
|
+
await options.onAudit?.({ action: "encrypt", travelerId, actorId });
|
|
127
|
+
return this.getTravelerTravelDetails(db, travelerId, actorId);
|
|
128
128
|
},
|
|
129
|
-
async
|
|
129
|
+
async deleteTravelerTravelDetails(db, travelerId, actorId) {
|
|
130
130
|
const [row] = await db
|
|
131
|
-
.delete(
|
|
132
|
-
.where(eq(
|
|
133
|
-
.returning({
|
|
131
|
+
.delete(bookingTravelerTravelDetails)
|
|
132
|
+
.where(eq(bookingTravelerTravelDetails.travelerId, travelerId))
|
|
133
|
+
.returning({ travelerId: bookingTravelerTravelDetails.travelerId });
|
|
134
134
|
if (row) {
|
|
135
|
-
await options.onAudit?.({ action: "delete",
|
|
135
|
+
await options.onAudit?.({ action: "delete", travelerId, actorId });
|
|
136
136
|
}
|
|
137
137
|
return row ?? null;
|
|
138
138
|
},
|
package/dist/products-ref.d.ts
CHANGED
|
@@ -631,6 +631,98 @@ export declare const optionUnitsRef: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
631
631
|
};
|
|
632
632
|
dialect: "pg";
|
|
633
633
|
}>;
|
|
634
|
+
export declare const productItinerariesRef: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
635
|
+
name: "product_itineraries";
|
|
636
|
+
schema: undefined;
|
|
637
|
+
columns: {
|
|
638
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
639
|
+
name: string;
|
|
640
|
+
tableName: "product_itineraries";
|
|
641
|
+
dataType: "string";
|
|
642
|
+
columnType: "PgText";
|
|
643
|
+
data: string;
|
|
644
|
+
driverParam: string;
|
|
645
|
+
notNull: true;
|
|
646
|
+
hasDefault: true;
|
|
647
|
+
isPrimaryKey: true;
|
|
648
|
+
isAutoincrement: false;
|
|
649
|
+
hasRuntimeDefault: true;
|
|
650
|
+
enumValues: [string, ...string[]];
|
|
651
|
+
baseColumn: never;
|
|
652
|
+
identity: undefined;
|
|
653
|
+
generated: undefined;
|
|
654
|
+
}, {}, {}>;
|
|
655
|
+
productId: import("drizzle-orm/pg-core").PgColumn<{
|
|
656
|
+
name: string;
|
|
657
|
+
tableName: "product_itineraries";
|
|
658
|
+
dataType: "string";
|
|
659
|
+
columnType: "PgText";
|
|
660
|
+
data: string;
|
|
661
|
+
driverParam: string;
|
|
662
|
+
notNull: true;
|
|
663
|
+
hasDefault: false;
|
|
664
|
+
isPrimaryKey: false;
|
|
665
|
+
isAutoincrement: false;
|
|
666
|
+
hasRuntimeDefault: false;
|
|
667
|
+
enumValues: [string, ...string[]];
|
|
668
|
+
baseColumn: never;
|
|
669
|
+
identity: undefined;
|
|
670
|
+
generated: undefined;
|
|
671
|
+
}, {}, {}>;
|
|
672
|
+
name: import("drizzle-orm/pg-core").PgColumn<{
|
|
673
|
+
name: "name";
|
|
674
|
+
tableName: "product_itineraries";
|
|
675
|
+
dataType: "string";
|
|
676
|
+
columnType: "PgText";
|
|
677
|
+
data: string;
|
|
678
|
+
driverParam: string;
|
|
679
|
+
notNull: true;
|
|
680
|
+
hasDefault: false;
|
|
681
|
+
isPrimaryKey: false;
|
|
682
|
+
isAutoincrement: false;
|
|
683
|
+
hasRuntimeDefault: false;
|
|
684
|
+
enumValues: [string, ...string[]];
|
|
685
|
+
baseColumn: never;
|
|
686
|
+
identity: undefined;
|
|
687
|
+
generated: undefined;
|
|
688
|
+
}, {}, {}>;
|
|
689
|
+
isDefault: import("drizzle-orm/pg-core").PgColumn<{
|
|
690
|
+
name: "is_default";
|
|
691
|
+
tableName: "product_itineraries";
|
|
692
|
+
dataType: "boolean";
|
|
693
|
+
columnType: "PgBoolean";
|
|
694
|
+
data: boolean;
|
|
695
|
+
driverParam: boolean;
|
|
696
|
+
notNull: true;
|
|
697
|
+
hasDefault: true;
|
|
698
|
+
isPrimaryKey: false;
|
|
699
|
+
isAutoincrement: false;
|
|
700
|
+
hasRuntimeDefault: false;
|
|
701
|
+
enumValues: undefined;
|
|
702
|
+
baseColumn: never;
|
|
703
|
+
identity: undefined;
|
|
704
|
+
generated: undefined;
|
|
705
|
+
}, {}, {}>;
|
|
706
|
+
sortOrder: import("drizzle-orm/pg-core").PgColumn<{
|
|
707
|
+
name: "sort_order";
|
|
708
|
+
tableName: "product_itineraries";
|
|
709
|
+
dataType: "number";
|
|
710
|
+
columnType: "PgInteger";
|
|
711
|
+
data: number;
|
|
712
|
+
driverParam: string | number;
|
|
713
|
+
notNull: true;
|
|
714
|
+
hasDefault: true;
|
|
715
|
+
isPrimaryKey: false;
|
|
716
|
+
isAutoincrement: false;
|
|
717
|
+
hasRuntimeDefault: false;
|
|
718
|
+
enumValues: undefined;
|
|
719
|
+
baseColumn: never;
|
|
720
|
+
identity: undefined;
|
|
721
|
+
generated: undefined;
|
|
722
|
+
}, {}, {}>;
|
|
723
|
+
};
|
|
724
|
+
dialect: "pg";
|
|
725
|
+
}>;
|
|
634
726
|
export declare const productDaysRef: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
635
727
|
name: "product_days";
|
|
636
728
|
schema: undefined;
|
|
@@ -652,7 +744,7 @@ export declare const productDaysRef: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
652
744
|
identity: undefined;
|
|
653
745
|
generated: undefined;
|
|
654
746
|
}, {}, {}>;
|
|
655
|
-
|
|
747
|
+
itineraryId: import("drizzle-orm/pg-core").PgColumn<{
|
|
656
748
|
name: string;
|
|
657
749
|
tableName: "product_days";
|
|
658
750
|
dataType: "string";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products-ref.d.ts","sourceRoot":"","sources":["../src/products-ref.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EActB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBzB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIzB,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAahC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvC,CAAA"}
|
|
1
|
+
{"version":3,"file":"products-ref.d.ts","sourceRoot":"","sources":["../src/products-ref.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EActB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBzB,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMhC,CAAA;AAMF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIzB,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAahC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvC,CAAA"}
|
package/dist/products-ref.js
CHANGED
|
@@ -42,9 +42,20 @@ export const optionUnitsRef = pgTable("option_units", {
|
|
|
42
42
|
sortOrder: integer("sort_order").notNull().default(0),
|
|
43
43
|
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
44
44
|
});
|
|
45
|
+
export const productItinerariesRef = pgTable("product_itineraries", {
|
|
46
|
+
id: typeId("product_itineraries").primaryKey(),
|
|
47
|
+
productId: typeIdRef("product_id").notNull(),
|
|
48
|
+
name: text("name").notNull(),
|
|
49
|
+
isDefault: boolean("is_default").notNull().default(false),
|
|
50
|
+
sortOrder: integer("sort_order").notNull().default(0),
|
|
51
|
+
});
|
|
52
|
+
// product_days was re-parented to product_itineraries in products, so the
|
|
53
|
+
// historical `product_days.product_id` column no longer exists. Bookings'
|
|
54
|
+
// getConvertProductData joins through product_itineraries to keep the
|
|
55
|
+
// per-product day lookup working.
|
|
45
56
|
export const productDaysRef = pgTable("product_days", {
|
|
46
57
|
id: typeId("product_days").primaryKey(),
|
|
47
|
-
|
|
58
|
+
itineraryId: typeIdRef("itinerary_id").notNull(),
|
|
48
59
|
dayNumber: integer("day_number").notNull(),
|
|
49
60
|
});
|
|
50
61
|
export const productDayServicesRef = pgTable("product_day_services", {
|
package/dist/routes-groups.d.ts
CHANGED
|
@@ -87,6 +87,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
87
87
|
createdAt: string;
|
|
88
88
|
updatedAt: string;
|
|
89
89
|
organizationId: string | null;
|
|
90
|
+
redeemedAt: string | null;
|
|
90
91
|
startDate: string | null;
|
|
91
92
|
endDate: string | null;
|
|
92
93
|
bookingNumber: string;
|
|
@@ -94,6 +95,16 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
94
95
|
sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
|
|
95
96
|
externalBookingRef: string | null;
|
|
96
97
|
communicationLanguage: string | null;
|
|
98
|
+
contactFirstName: string | null;
|
|
99
|
+
contactLastName: string | null;
|
|
100
|
+
contactEmail: string | null;
|
|
101
|
+
contactPhone: string | null;
|
|
102
|
+
contactPreferredLanguage: string | null;
|
|
103
|
+
contactCountry: string | null;
|
|
104
|
+
contactRegion: string | null;
|
|
105
|
+
contactCity: string | null;
|
|
106
|
+
contactAddressLine1: string | null;
|
|
107
|
+
contactPostalCode: string | null;
|
|
97
108
|
sellCurrency: string;
|
|
98
109
|
baseCurrency: string | null;
|
|
99
110
|
sellAmountCents: number | null;
|
|
@@ -108,7 +119,6 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
108
119
|
expiredAt: string | null;
|
|
109
120
|
cancelledAt: string | null;
|
|
110
121
|
completedAt: string | null;
|
|
111
|
-
redeemedAt: string | null;
|
|
112
122
|
} | null;
|
|
113
123
|
}[];
|
|
114
124
|
id: string;
|
|
@@ -213,6 +223,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
213
223
|
createdAt: string;
|
|
214
224
|
updatedAt: string;
|
|
215
225
|
organizationId: string | null;
|
|
226
|
+
redeemedAt: string | null;
|
|
216
227
|
startDate: string | null;
|
|
217
228
|
endDate: string | null;
|
|
218
229
|
bookingNumber: string;
|
|
@@ -220,6 +231,16 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
220
231
|
sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
|
|
221
232
|
externalBookingRef: string | null;
|
|
222
233
|
communicationLanguage: string | null;
|
|
234
|
+
contactFirstName: string | null;
|
|
235
|
+
contactLastName: string | null;
|
|
236
|
+
contactEmail: string | null;
|
|
237
|
+
contactPhone: string | null;
|
|
238
|
+
contactPreferredLanguage: string | null;
|
|
239
|
+
contactCountry: string | null;
|
|
240
|
+
contactRegion: string | null;
|
|
241
|
+
contactCity: string | null;
|
|
242
|
+
contactAddressLine1: string | null;
|
|
243
|
+
contactPostalCode: string | null;
|
|
223
244
|
sellCurrency: string;
|
|
224
245
|
baseCurrency: string | null;
|
|
225
246
|
sellAmountCents: number | null;
|
|
@@ -234,7 +255,6 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
234
255
|
expiredAt: string | null;
|
|
235
256
|
cancelledAt: string | null;
|
|
236
257
|
completedAt: string | null;
|
|
237
|
-
redeemedAt: string | null;
|
|
238
258
|
} | null;
|
|
239
259
|
}[];
|
|
240
260
|
};
|
|
@@ -317,7 +337,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
317
337
|
};
|
|
318
338
|
};
|
|
319
339
|
} & {
|
|
320
|
-
"/:id/
|
|
340
|
+
"/:id/travelers": {
|
|
321
341
|
$get: {
|
|
322
342
|
input: {
|
|
323
343
|
param: {
|
|
@@ -335,7 +355,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
335
355
|
lastName: string;
|
|
336
356
|
personId: string | null;
|
|
337
357
|
bookingId: string;
|
|
338
|
-
participantType: "
|
|
358
|
+
participantType: "other" | "traveler" | "occupant";
|
|
339
359
|
travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
|
|
340
360
|
phone: string | null;
|
|
341
361
|
preferredLanguage: string | null;
|
|
@@ -348,7 +368,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
|
|
|
348
368
|
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
349
369
|
};
|
|
350
370
|
};
|
|
351
|
-
}, "/", "/:id/
|
|
371
|
+
}, "/", "/:id/travelers">;
|
|
352
372
|
export type BookingGroupRoutes = typeof bookingGroupRoutes;
|
|
353
373
|
export {};
|
|
354
374
|
//# sourceMappingURL=routes-groups.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-groups.d.ts","sourceRoot":"","sources":["../src/routes-groups.ts"],"names":[],"mappings":"AAGA,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
|
|
1
|
+
{"version":3,"file":"routes-groups.d.ts","sourceRoot":"","sources":["../src/routes-groups.ts"],"names":[],"mappings":"AAGA,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA0E3B,CAAA;AAEJ,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA"}
|
package/dist/routes-groups.js
CHANGED
|
@@ -56,7 +56,7 @@ export const bookingGroupRoutes = new Hono()
|
|
|
56
56
|
return c.json({ error: "Membership not found" }, 404);
|
|
57
57
|
return c.json({ success: true });
|
|
58
58
|
})
|
|
59
|
-
.get("/:id/
|
|
60
|
-
const
|
|
61
|
-
return c.json({ data:
|
|
59
|
+
.get("/:id/travelers", async (c) => {
|
|
60
|
+
const travelers = await bookingGroupsService.listGroupBookingTravelers(c.get("db"), c.req.param("id"));
|
|
61
|
+
return c.json({ data: travelers });
|
|
62
62
|
});
|