@voyantjs/bookings 0.3.0 → 0.3.1

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.
@@ -0,0 +1,66 @@
1
+ import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
2
+ import type { Context } from "hono";
3
+ export type KmsBindings = Partial<{
4
+ KMS_PROVIDER: string;
5
+ KMS_ENV_KEY: string;
6
+ KMS_LOCAL_KEY: string;
7
+ GCP_PROJECT_ID: string;
8
+ GCP_SERVICE_ACCOUNT_EMAIL: string;
9
+ GCP_PRIVATE_KEY: string;
10
+ GCP_KMS_KEYRING: string;
11
+ GCP_KMS_LOCATION: string;
12
+ GCP_KMS_PEOPLE_KEY_NAME: string;
13
+ GCP_KMS_INTEGRATIONS_KEY_NAME: string;
14
+ AWS_REGION: string;
15
+ AWS_ACCESS_KEY_ID: string;
16
+ AWS_SECRET_ACCESS_KEY: string;
17
+ AWS_SESSION_TOKEN: string;
18
+ AWS_KMS_ENDPOINT: string;
19
+ AWS_KMS_PEOPLE_KEY_ID: string;
20
+ AWS_KMS_INTEGRATIONS_KEY_ID: string;
21
+ }>;
22
+ export type Env = {
23
+ Bindings: KmsBindings;
24
+ Variables: {
25
+ db: PostgresJsDatabase;
26
+ userId?: string;
27
+ actor?: "staff" | "customer" | "partner" | "supplier";
28
+ callerType?: "session" | "api_key" | "internal";
29
+ scopes?: string[] | null;
30
+ isInternalRequest?: boolean;
31
+ authorizeBookingPii?: (args: {
32
+ db: PostgresJsDatabase;
33
+ userId?: string;
34
+ actor?: "staff" | "customer" | "partner" | "supplier";
35
+ callerType?: "session" | "api_key" | "internal";
36
+ scopes?: string[] | null;
37
+ isInternalRequest?: boolean;
38
+ bookingId: string;
39
+ participantId: string;
40
+ action: "read" | "update" | "delete";
41
+ }) => boolean | Promise<boolean>;
42
+ };
43
+ };
44
+ export declare function getRuntimeEnv(c: Context<Env>): {
45
+ KMS_PROVIDER?: string | undefined;
46
+ KMS_ENV_KEY?: string | undefined;
47
+ KMS_LOCAL_KEY?: string | undefined;
48
+ GCP_PROJECT_ID?: string | undefined;
49
+ GCP_SERVICE_ACCOUNT_EMAIL?: string | undefined;
50
+ GCP_PRIVATE_KEY?: string | undefined;
51
+ GCP_KMS_KEYRING?: string | undefined;
52
+ GCP_KMS_LOCATION?: string | undefined;
53
+ GCP_KMS_PEOPLE_KEY_NAME?: string | undefined;
54
+ GCP_KMS_INTEGRATIONS_KEY_NAME?: string | undefined;
55
+ AWS_REGION?: string | undefined;
56
+ AWS_ACCESS_KEY_ID?: string | undefined;
57
+ AWS_SECRET_ACCESS_KEY?: string | undefined;
58
+ AWS_SESSION_TOKEN?: string | undefined;
59
+ AWS_KMS_ENDPOINT?: string | undefined;
60
+ AWS_KMS_PEOPLE_KEY_ID?: string | undefined;
61
+ AWS_KMS_INTEGRATIONS_KEY_ID?: string | undefined;
62
+ };
63
+ export declare function notFound<T extends Env>(c: Context<T>, error: string): Response & import("hono").TypedResponse<{
64
+ error: string;
65
+ }, 404, "json">;
66
+ //# sourceMappingURL=routes-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes-shared.d.ts","sourceRoot":"","sources":["../src/routes-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,yBAAyB,EAAE,MAAM,CAAA;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,6BAA6B,EAAE,MAAM,CAAA;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,2BAA2B,EAAE,MAAM,CAAA;CACpC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,EAAE,WAAW,CAAA;IACrB,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;QACrD,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;QAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;YAC3B,EAAE,EAAE,kBAAkB,CAAA;YACtB,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;YACrD,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;YAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;YACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;YAC3B,SAAS,EAAE,MAAM,CAAA;YACjB,aAAa,EAAE,MAAM,CAAA;YACrB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;SACrC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KACjC,CAAA;CACF,CAAA;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;EAY5C;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;;gBAEnE"}
@@ -0,0 +1,10 @@
1
+ export function getRuntimeEnv(c) {
2
+ const processEnv = globalThis.process?.env ?? {};
3
+ return {
4
+ ...processEnv,
5
+ ...(c.env ?? {}),
6
+ };
7
+ }
8
+ export function notFound(c, error) {
9
+ return c.json({ error }, 404);
10
+ }
package/dist/routes.d.ts CHANGED
@@ -1,45 +1,5 @@
1
- import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
2
- type KmsBindings = Partial<{
3
- KMS_PROVIDER: string;
4
- KMS_ENV_KEY: string;
5
- KMS_LOCAL_KEY: string;
6
- GCP_PROJECT_ID: string;
7
- GCP_SERVICE_ACCOUNT_EMAIL: string;
8
- GCP_PRIVATE_KEY: string;
9
- GCP_KMS_KEYRING: string;
10
- GCP_KMS_LOCATION: string;
11
- GCP_KMS_PEOPLE_KEY_NAME: string;
12
- GCP_KMS_INTEGRATIONS_KEY_NAME: string;
13
- AWS_REGION: string;
14
- AWS_ACCESS_KEY_ID: string;
15
- AWS_SECRET_ACCESS_KEY: string;
16
- AWS_SESSION_TOKEN: string;
17
- AWS_KMS_ENDPOINT: string;
18
- AWS_KMS_PEOPLE_KEY_ID: string;
19
- AWS_KMS_INTEGRATIONS_KEY_ID: string;
20
- }>;
21
- type Env = {
22
- Bindings: KmsBindings;
23
- Variables: {
24
- db: PostgresJsDatabase;
25
- userId?: string;
26
- actor?: "staff" | "customer" | "partner" | "supplier";
27
- callerType?: "session" | "api_key" | "internal";
28
- scopes?: string[] | null;
29
- isInternalRequest?: boolean;
30
- authorizeBookingPii?: (args: {
31
- db: PostgresJsDatabase;
32
- userId?: string;
33
- actor?: "staff" | "customer" | "partner" | "supplier";
34
- callerType?: "session" | "api_key" | "internal";
35
- scopes?: string[] | null;
36
- isInternalRequest?: boolean;
37
- bookingId: string;
38
- participantId: string;
39
- action: "read" | "update" | "delete";
40
- }) => boolean | Promise<boolean>;
41
- };
42
- };
1
+ import type { publicBookingRoutes } from "./routes-public.js";
2
+ import { type Env } from "./routes-shared.js";
43
3
  export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, {
44
4
  "/": {
45
5
  $get: {
@@ -2167,5 +2127,5 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, {
2167
2127
  };
2168
2128
  }, "/", "/:id/documents/:documentId">;
2169
2129
  export type BookingRoutes = typeof bookingRoutes;
2170
- export {};
2130
+ export type PublicBookingRoutes = typeof publicBookingRoutes;
2171
2131
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA43BtB,CAAA;AAEJ,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,KAAK,GAAG,EAAiB,MAAM,oBAAoB,CAAA;AAyJ5D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA43BtB,CAAA;AAEJ,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAChD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
package/dist/routes.js CHANGED
@@ -1,16 +1,10 @@
1
1
  import { createKmsProviderFromEnv } from "@voyantjs/utils";
2
2
  import { Hono } from "hono";
3
3
  import { createBookingPiiService } from "./pii.js";
4
+ import { getRuntimeEnv } from "./routes-shared.js";
4
5
  import { bookingPiiAccessLog } from "./schema.js";
5
6
  import { bookingsService } from "./service.js";
6
7
  import { bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertParticipantSchema, insertPassengerSchema, insertSupplierStatusSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingFulfillmentSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateParticipantSchema, updatePassengerSchema, updateSupplierStatusSchema, upsertParticipantTravelDetailsSchema, } from "./validation.js";
7
- function getRuntimeEnv(c) {
8
- const processEnv = globalThis.process?.env ?? {};
9
- return {
10
- ...processEnv,
11
- ...(c.env ?? {}),
12
- };
13
- }
14
8
  function hasPiiScope(scopes, action) {
15
9
  if (!scopes || scopes.length === 0) {
16
10
  return false;
@@ -337,6 +337,170 @@ export declare const bookingActivityLog: import("drizzle-orm/pg-core").PgTableWi
337
337
  };
338
338
  dialect: "pg";
339
339
  }>;
340
+ export declare const bookingSessionStates: import("drizzle-orm/pg-core").PgTableWithColumns<{
341
+ name: "booking_session_states";
342
+ schema: undefined;
343
+ columns: {
344
+ id: import("drizzle-orm/pg-core").PgColumn<{
345
+ name: string;
346
+ tableName: "booking_session_states";
347
+ dataType: "string";
348
+ columnType: "PgText";
349
+ data: string;
350
+ driverParam: string;
351
+ notNull: true;
352
+ hasDefault: true;
353
+ isPrimaryKey: true;
354
+ isAutoincrement: false;
355
+ hasRuntimeDefault: true;
356
+ enumValues: [string, ...string[]];
357
+ baseColumn: never;
358
+ identity: undefined;
359
+ generated: undefined;
360
+ }, {}, {}>;
361
+ bookingId: import("drizzle-orm/pg-core").PgColumn<{
362
+ name: string;
363
+ tableName: "booking_session_states";
364
+ dataType: "string";
365
+ columnType: "PgText";
366
+ data: string;
367
+ driverParam: string;
368
+ notNull: true;
369
+ hasDefault: false;
370
+ isPrimaryKey: false;
371
+ isAutoincrement: false;
372
+ hasRuntimeDefault: false;
373
+ enumValues: [string, ...string[]];
374
+ baseColumn: never;
375
+ identity: undefined;
376
+ generated: undefined;
377
+ }, {}, {}>;
378
+ stateKey: import("drizzle-orm/pg-core").PgColumn<{
379
+ name: "state_key";
380
+ tableName: "booking_session_states";
381
+ dataType: "string";
382
+ columnType: "PgText";
383
+ data: string;
384
+ driverParam: string;
385
+ notNull: true;
386
+ hasDefault: true;
387
+ isPrimaryKey: false;
388
+ isAutoincrement: false;
389
+ hasRuntimeDefault: false;
390
+ enumValues: [string, ...string[]];
391
+ baseColumn: never;
392
+ identity: undefined;
393
+ generated: undefined;
394
+ }, {}, {}>;
395
+ currentStep: import("drizzle-orm/pg-core").PgColumn<{
396
+ name: "current_step";
397
+ tableName: "booking_session_states";
398
+ dataType: "string";
399
+ columnType: "PgText";
400
+ data: string;
401
+ driverParam: string;
402
+ notNull: false;
403
+ hasDefault: false;
404
+ isPrimaryKey: false;
405
+ isAutoincrement: false;
406
+ hasRuntimeDefault: false;
407
+ enumValues: [string, ...string[]];
408
+ baseColumn: never;
409
+ identity: undefined;
410
+ generated: undefined;
411
+ }, {}, {}>;
412
+ completedSteps: import("drizzle-orm/pg-core").PgColumn<{
413
+ name: "completed_steps";
414
+ tableName: "booking_session_states";
415
+ dataType: "json";
416
+ columnType: "PgJsonb";
417
+ data: string[];
418
+ driverParam: unknown;
419
+ notNull: true;
420
+ hasDefault: true;
421
+ isPrimaryKey: false;
422
+ isAutoincrement: false;
423
+ hasRuntimeDefault: false;
424
+ enumValues: undefined;
425
+ baseColumn: never;
426
+ identity: undefined;
427
+ generated: undefined;
428
+ }, {}, {
429
+ $type: string[];
430
+ }>;
431
+ payload: import("drizzle-orm/pg-core").PgColumn<{
432
+ name: "payload";
433
+ tableName: "booking_session_states";
434
+ dataType: "json";
435
+ columnType: "PgJsonb";
436
+ data: Record<string, unknown>;
437
+ driverParam: unknown;
438
+ notNull: false;
439
+ hasDefault: false;
440
+ isPrimaryKey: false;
441
+ isAutoincrement: false;
442
+ hasRuntimeDefault: false;
443
+ enumValues: undefined;
444
+ baseColumn: never;
445
+ identity: undefined;
446
+ generated: undefined;
447
+ }, {}, {
448
+ $type: Record<string, unknown>;
449
+ }>;
450
+ version: import("drizzle-orm/pg-core").PgColumn<{
451
+ name: "version";
452
+ tableName: "booking_session_states";
453
+ dataType: "number";
454
+ columnType: "PgInteger";
455
+ data: number;
456
+ driverParam: string | number;
457
+ notNull: true;
458
+ hasDefault: true;
459
+ isPrimaryKey: false;
460
+ isAutoincrement: false;
461
+ hasRuntimeDefault: false;
462
+ enumValues: undefined;
463
+ baseColumn: never;
464
+ identity: undefined;
465
+ generated: undefined;
466
+ }, {}, {}>;
467
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
468
+ name: "created_at";
469
+ tableName: "booking_session_states";
470
+ dataType: "date";
471
+ columnType: "PgTimestamp";
472
+ data: Date;
473
+ driverParam: string;
474
+ notNull: true;
475
+ hasDefault: true;
476
+ isPrimaryKey: false;
477
+ isAutoincrement: false;
478
+ hasRuntimeDefault: false;
479
+ enumValues: undefined;
480
+ baseColumn: never;
481
+ identity: undefined;
482
+ generated: undefined;
483
+ }, {}, {}>;
484
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
485
+ name: "updated_at";
486
+ tableName: "booking_session_states";
487
+ dataType: "date";
488
+ columnType: "PgTimestamp";
489
+ data: Date;
490
+ driverParam: string;
491
+ notNull: true;
492
+ hasDefault: true;
493
+ isPrimaryKey: false;
494
+ isAutoincrement: false;
495
+ hasRuntimeDefault: false;
496
+ enumValues: undefined;
497
+ baseColumn: never;
498
+ identity: undefined;
499
+ generated: undefined;
500
+ }, {}, {}>;
501
+ };
502
+ dialect: "pg";
503
+ }>;
340
504
  export declare const bookingNotes: import("drizzle-orm/pg-core").PgTableWithColumns<{
341
505
  name: "booking_notes";
342
506
  schema: undefined;
@@ -593,6 +757,8 @@ export type BookingSupplierStatus = typeof bookingSupplierStatuses.$inferSelect;
593
757
  export type NewBookingSupplierStatus = typeof bookingSupplierStatuses.$inferInsert;
594
758
  export type BookingActivity = typeof bookingActivityLog.$inferSelect;
595
759
  export type NewBookingActivity = typeof bookingActivityLog.$inferInsert;
760
+ export type BookingSessionState = typeof bookingSessionStates.$inferSelect;
761
+ export type NewBookingSessionState = typeof bookingSessionStates.$inferInsert;
596
762
  export type BookingNote = typeof bookingNotes.$inferSelect;
597
763
  export type NewBookingNote = typeof bookingNotes.$inferInsert;
598
764
  export type BookingDocument = typeof bookingDocuments.$inferSelect;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-operations.d.ts","sourceRoot":"","sources":["../src/schema-operations.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBnC,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxB,CAAA;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB5B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAA;AAC/E,MAAM,MAAM,wBAAwB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAA;AAClF,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACvE,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,YAAY,CAAA;AAC1D,MAAM,MAAM,cAAc,GAAG,OAAO,YAAY,CAAC,YAAY,CAAA;AAC7D,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAA;AAClE,MAAM,MAAM,kBAAkB,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAA"}
1
+ {"version":3,"file":"schema-operations.d.ts","sourceRoot":"","sources":["../src/schema-operations.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBnC,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B,CAAA;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBhC,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxB,CAAA;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB5B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAA;AAC/E,MAAM,MAAM,wBAAwB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAA;AAClF,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACvE,MAAM,MAAM,mBAAmB,GAAG,OAAO,oBAAoB,CAAC,YAAY,CAAA;AAC1E,MAAM,MAAM,sBAAsB,GAAG,OAAO,oBAAoB,CAAC,YAAY,CAAA;AAC7E,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,YAAY,CAAA;AAC1D,MAAM,MAAM,cAAc,GAAG,OAAO,YAAY,CAAC,YAAY,CAAA;AAC7D,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAA;AAClE,MAAM,MAAM,kBAAkB,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { typeId, typeIdRef } from "@voyantjs/db/lib/typeid-column";
2
- import { index, integer, jsonb, pgTable, text, timestamp } from "drizzle-orm/pg-core";
2
+ import { index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core";
3
3
  import { bookingParticipants, bookings } from "./schema-core";
4
4
  import { bookingActivityTypeEnum, bookingDocumentTypeEnum, supplierConfirmationStatusEnum, } from "./schema-shared";
5
5
  export const bookingSupplierStatuses = pgTable("booking_supplier_statuses", {
@@ -32,6 +32,23 @@ export const bookingActivityLog = pgTable("booking_activity_log", {
32
32
  metadata: jsonb("metadata").$type(),
33
33
  createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
34
34
  }, (table) => [index("idx_booking_activity_log_booking").on(table.bookingId)]);
35
+ export const bookingSessionStates = pgTable("booking_session_states", {
36
+ id: typeId("booking_session_states"),
37
+ bookingId: typeIdRef("booking_id")
38
+ .notNull()
39
+ .references(() => bookings.id, { onDelete: "cascade" }),
40
+ stateKey: text("state_key").notNull().default("wizard"),
41
+ currentStep: text("current_step"),
42
+ completedSteps: jsonb("completed_steps").$type().notNull().default([]),
43
+ payload: jsonb("payload").$type(),
44
+ version: integer("version").notNull().default(1),
45
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
46
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
47
+ }, (table) => [
48
+ index("idx_booking_session_states_booking").on(table.bookingId),
49
+ index("idx_booking_session_states_key").on(table.stateKey),
50
+ uniqueIndex("uidx_booking_session_states_booking_key").on(table.bookingId, table.stateKey),
51
+ ]);
35
52
  export const bookingNotes = pgTable("booking_notes", {
36
53
  id: typeId("booking_notes"),
37
54
  bookingId: typeIdRef("booking_id")
@@ -3,6 +3,7 @@ export declare const bookingsRelations: import("drizzle-orm").Relations<"booking
3
3
  supplierStatuses: import("drizzle-orm").Many<"booking_supplier_statuses">;
4
4
  activityLog: import("drizzle-orm").Many<"booking_activity_log">;
5
5
  notes: import("drizzle-orm").Many<"booking_notes">;
6
+ sessionStates: import("drizzle-orm").Many<"booking_session_states">;
6
7
  documents: import("drizzle-orm").Many<"booking_documents">;
7
8
  fulfillments: import("drizzle-orm").Many<"booking_fulfillments">;
8
9
  redemptionEvents: import("drizzle-orm").Many<"booking_redemption_events">;
@@ -48,6 +49,9 @@ export declare const bookingRedemptionEventsRelations: import("drizzle-orm").Rel
48
49
  export declare const bookingActivityLogRelations: import("drizzle-orm").Relations<"booking_activity_log", {
49
50
  booking: import("drizzle-orm").One<"bookings", true>;
50
51
  }>;
52
+ export declare const bookingSessionStatesRelations: import("drizzle-orm").Relations<"booking_session_states", {
53
+ booking: import("drizzle-orm").One<"bookings", true>;
54
+ }>;
51
55
  export declare const bookingNotesRelations: import("drizzle-orm").Relations<"booking_notes", {
52
56
  booking: import("drizzle-orm").One<"bookings", true>;
53
57
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-relations.d.ts","sourceRoot":"","sources":["../src/schema-relations.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,iBAAiB;;;;;;;;;;EAU3B,CAAA;AAEH,eAAO,MAAM,4BAA4B;;;;;;EAMtC,CAAA;AAEH,eAAO,MAAM,qBAAqB;;;;;;EAM/B,CAAA;AAEH,eAAO,MAAM,2BAA2B;;;;EAUrC,CAAA;AAEH,eAAO,MAAM,gCAAgC;;;EAS1C,CAAA;AAEH,eAAO,MAAM,gCAAgC;;EAK1C,CAAA;AAEH,eAAO,MAAM,4BAA4B;;;;EAUtC,CAAA;AAEH,eAAO,MAAM,gCAAgC;;;;EAa1C,CAAA;AAEH,eAAO,MAAM,2BAA2B;;EAErC,CAAA;AAEH,eAAO,MAAM,qBAAqB;;EAE/B,CAAA;AAEH,eAAO,MAAM,yBAAyB;;;EAMnC,CAAA"}
1
+ {"version":3,"file":"schema-relations.d.ts","sourceRoot":"","sources":["../src/schema-relations.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;EAW3B,CAAA;AAEH,eAAO,MAAM,4BAA4B;;;;;;EAMtC,CAAA;AAEH,eAAO,MAAM,qBAAqB;;;;;;EAM/B,CAAA;AAEH,eAAO,MAAM,2BAA2B;;;;EAUrC,CAAA;AAEH,eAAO,MAAM,gCAAgC;;;EAS1C,CAAA;AAEH,eAAO,MAAM,gCAAgC;;EAK1C,CAAA;AAEH,eAAO,MAAM,4BAA4B;;;;EAUtC,CAAA;AAEH,eAAO,MAAM,gCAAgC;;;;EAa1C,CAAA;AAEH,eAAO,MAAM,2BAA2B;;EAErC,CAAA;AAEH,eAAO,MAAM,6BAA6B;;EAKvC,CAAA;AAEH,eAAO,MAAM,qBAAqB;;EAE/B,CAAA;AAEH,eAAO,MAAM,yBAAyB;;;EAMnC,CAAA"}
@@ -2,12 +2,13 @@ import { relations } from "drizzle-orm";
2
2
  import { availabilitySlotsRef } from "./availability-ref.js";
3
3
  import { bookingParticipants, bookings } from "./schema-core";
4
4
  import { bookingAllocations, bookingFulfillments, bookingItemParticipants, bookingItems, bookingRedemptionEvents, } from "./schema-items";
5
- import { bookingActivityLog, bookingDocuments, bookingNotes, bookingSupplierStatuses, } from "./schema-operations";
5
+ import { bookingActivityLog, bookingDocuments, bookingNotes, bookingSessionStates, bookingSupplierStatuses, } from "./schema-operations";
6
6
  export const bookingsRelations = relations(bookings, ({ many }) => ({
7
7
  participants: many(bookingParticipants),
8
8
  supplierStatuses: many(bookingSupplierStatuses),
9
9
  activityLog: many(bookingActivityLog),
10
10
  notes: many(bookingNotes),
11
+ sessionStates: many(bookingSessionStates),
11
12
  documents: many(bookingDocuments),
12
13
  fulfillments: many(bookingFulfillments),
13
14
  redemptionEvents: many(bookingRedemptionEvents),
@@ -83,6 +84,12 @@ export const bookingRedemptionEventsRelations = relations(bookingRedemptionEvent
83
84
  export const bookingActivityLogRelations = relations(bookingActivityLog, ({ one }) => ({
84
85
  booking: one(bookings, { fields: [bookingActivityLog.bookingId], references: [bookings.id] }),
85
86
  }));
87
+ export const bookingSessionStatesRelations = relations(bookingSessionStates, ({ one }) => ({
88
+ booking: one(bookings, {
89
+ fields: [bookingSessionStates.bookingId],
90
+ references: [bookings.id],
91
+ }),
92
+ }));
86
93
  export const bookingNotesRelations = relations(bookingNotes, ({ one }) => ({
87
94
  booking: one(bookings, { fields: [bookingNotes.bookingId], references: [bookings.id] }),
88
95
  }));