@voyant-travel/mice 0.2.0 → 0.4.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/booking-extension.d.ts +130 -0
- package/dist/booking-extension.d.ts.map +1 -0
- package/dist/booking-extension.js +83 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -0
- package/dist/routes.d.ts +856 -5
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +167 -0
- package/dist/schema-delegates.d.ts +340 -0
- package/dist/schema-delegates.d.ts.map +1 -0
- package/dist/schema-delegates.js +76 -0
- package/dist/schema-rfp.d.ts +790 -0
- package/dist/schema-rfp.d.ts.map +1 -0
- package/dist/schema-rfp.js +104 -0
- package/dist/schema-rooming.d.ts +333 -0
- package/dist/schema-rooming.d.ts.map +1 -0
- package/dist/schema-rooming.js +47 -0
- package/dist/schema.d.ts +5 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +4 -0
- package/dist/service-delegates.d.ts +40 -0
- package/dist/service-delegates.d.ts.map +1 -0
- package/dist/service-delegates.js +107 -0
- package/dist/service-rfp.d.ts +89 -0
- package/dist/service-rfp.d.ts.map +1 -0
- package/dist/service-rfp.js +198 -0
- package/dist/service-rooming.d.ts +50 -0
- package/dist/service-rooming.d.ts.map +1 -0
- package/dist/service-rooming.js +102 -0
- package/dist/validation-delegates.d.ts +109 -0
- package/dist/validation-delegates.d.ts.map +1 -0
- package/dist/validation-delegates.js +41 -0
- package/dist/validation-rfp.d.ts +110 -0
- package/dist/validation-rfp.d.ts.map +1 -0
- package/dist/validation-rfp.js +61 -0
- package/dist/validation-rooming.d.ts +37 -0
- package/dist/validation-rooming.d.ts.map +1 -0
- package/dist/validation-rooming.js +28 -0
- package/dist/validation-sessions.d.ts +1 -1
- package/migrations/0002_mice_baseline.sql +86 -0
- package/migrations/0003_mice_baseline.sql +84 -0
- package/migrations/meta/_journal.json +14 -0
- package/package.json +8 -3
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const rfpStatusSchema: z.ZodEnum<{
|
|
3
|
+
cancelled: "cancelled";
|
|
4
|
+
draft: "draft";
|
|
5
|
+
issued: "issued";
|
|
6
|
+
closed: "closed";
|
|
7
|
+
awarded: "awarded";
|
|
8
|
+
}>;
|
|
9
|
+
export declare const bidStatusSchema: z.ZodEnum<{
|
|
10
|
+
draft: "draft";
|
|
11
|
+
submitted: "submitted";
|
|
12
|
+
under_review: "under_review";
|
|
13
|
+
accepted: "accepted";
|
|
14
|
+
rejected: "rejected";
|
|
15
|
+
}>;
|
|
16
|
+
export declare const createRfpSchema: z.ZodObject<{
|
|
17
|
+
programId: z.ZodString;
|
|
18
|
+
title: z.ZodString;
|
|
19
|
+
requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
21
|
+
cancelled: "cancelled";
|
|
22
|
+
draft: "draft";
|
|
23
|
+
issued: "issued";
|
|
24
|
+
closed: "closed";
|
|
25
|
+
}>>;
|
|
26
|
+
issuedAt: z.ZodOptional<z.ZodString>;
|
|
27
|
+
dueAt: z.ZodOptional<z.ZodString>;
|
|
28
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export declare const updateRfpSchema: z.ZodObject<{
|
|
31
|
+
status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
32
|
+
cancelled: "cancelled";
|
|
33
|
+
draft: "draft";
|
|
34
|
+
issued: "issued";
|
|
35
|
+
closed: "closed";
|
|
36
|
+
}>>>;
|
|
37
|
+
notes: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
38
|
+
title: z.ZodOptional<z.ZodString>;
|
|
39
|
+
requirements: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
40
|
+
issuedAt: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
41
|
+
dueAt: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export declare const rfpListQuerySchema: z.ZodObject<{
|
|
44
|
+
programId: z.ZodString;
|
|
45
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
46
|
+
cancelled: "cancelled";
|
|
47
|
+
draft: "draft";
|
|
48
|
+
issued: "issued";
|
|
49
|
+
closed: "closed";
|
|
50
|
+
awarded: "awarded";
|
|
51
|
+
}>>;
|
|
52
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
53
|
+
offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
export declare const inviteSupplierSchema: z.ZodObject<{
|
|
56
|
+
supplierId: z.ZodString;
|
|
57
|
+
}, z.core.$strip>;
|
|
58
|
+
export declare const createBidSchema: z.ZodObject<{
|
|
59
|
+
supplierId: z.ZodString;
|
|
60
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
61
|
+
draft: "draft";
|
|
62
|
+
submitted: "submitted";
|
|
63
|
+
under_review: "under_review";
|
|
64
|
+
}>>;
|
|
65
|
+
totalCents: z.ZodOptional<z.ZodNumber>;
|
|
66
|
+
currency: z.ZodOptional<z.ZodString>;
|
|
67
|
+
proposalDoc: z.ZodOptional<z.ZodString>;
|
|
68
|
+
validUntil: z.ZodOptional<z.ZodString>;
|
|
69
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export declare const updateBidSchema: z.ZodObject<{
|
|
72
|
+
currency: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
73
|
+
status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
74
|
+
draft: "draft";
|
|
75
|
+
submitted: "submitted";
|
|
76
|
+
under_review: "under_review";
|
|
77
|
+
}>>>;
|
|
78
|
+
notes: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
79
|
+
totalCents: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
80
|
+
proposalDoc: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
81
|
+
validUntil: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
82
|
+
}, z.core.$strip>;
|
|
83
|
+
export declare const setBidLinesSchema: z.ZodObject<{
|
|
84
|
+
lines: z.ZodArray<z.ZodObject<{
|
|
85
|
+
requirementRef: z.ZodOptional<z.ZodString>;
|
|
86
|
+
description: z.ZodOptional<z.ZodString>;
|
|
87
|
+
quantity: z.ZodDefault<z.ZodNumber>;
|
|
88
|
+
unitCents: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
totalCents: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
}, z.core.$strip>>;
|
|
91
|
+
}, z.core.$strip>;
|
|
92
|
+
export declare const addBidEvaluationSchema: z.ZodObject<{
|
|
93
|
+
criterion: z.ZodString;
|
|
94
|
+
weight: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
score: z.ZodOptional<z.ZodNumber>;
|
|
96
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
97
|
+
evaluatedBy: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
export declare const awardRfpSchema: z.ZodObject<{
|
|
100
|
+
bidId: z.ZodString;
|
|
101
|
+
}, z.core.$strip>;
|
|
102
|
+
export type CreateRfpBody = z.infer<typeof createRfpSchema>;
|
|
103
|
+
export type UpdateRfpBody = z.infer<typeof updateRfpSchema>;
|
|
104
|
+
export type RfpListQuery = z.infer<typeof rfpListQuerySchema>;
|
|
105
|
+
export type InviteSupplierBody = z.infer<typeof inviteSupplierSchema>;
|
|
106
|
+
export type CreateBidBody = z.infer<typeof createBidSchema>;
|
|
107
|
+
export type UpdateBidBody = z.infer<typeof updateBidSchema>;
|
|
108
|
+
export type SetBidLinesBody = z.infer<typeof setBidLinesSchema>;
|
|
109
|
+
export type AddBidEvaluationBody = z.infer<typeof addBidEvaluationSchema>;
|
|
110
|
+
//# sourceMappingURL=validation-rfp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-rfp.d.ts","sourceRoot":"","sources":["../src/validation-rfp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,eAAe;;;;;;EAAgE,CAAA;AAC5F,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAA;AAOF,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAQ1B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;iBAAsD,CAAA;AAElF,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAK7B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;iBAE/B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;iBAQ1B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;iBAAuD,CAAA;AAEnF,eAAO,MAAM,iBAAiB;;;;;;;;iBAU5B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;iBAMjC,CAAA;AAEF,eAAO,MAAM,cAAc;;iBAEzB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACrE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC/D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const rfpStatusSchema = z.enum(["draft", "issued", "closed", "awarded", "cancelled"]);
|
|
3
|
+
export const bidStatusSchema = z.enum([
|
|
4
|
+
"draft",
|
|
5
|
+
"submitted",
|
|
6
|
+
"under_review",
|
|
7
|
+
"accepted",
|
|
8
|
+
"rejected",
|
|
9
|
+
]);
|
|
10
|
+
// `awarded` (RFP) and `accepted`/`rejected` (bid) are award-controlled — they may
|
|
11
|
+
// only be reached through the atomic `awardRfp` flow, never generic create/update.
|
|
12
|
+
const rfpEditableStatusSchema = z.enum(["draft", "issued", "closed", "cancelled"]);
|
|
13
|
+
const bidEditableStatusSchema = z.enum(["draft", "submitted", "under_review"]);
|
|
14
|
+
export const createRfpSchema = z.object({
|
|
15
|
+
programId: z.string().min(1),
|
|
16
|
+
title: z.string().min(1),
|
|
17
|
+
requirements: z.record(z.string(), z.unknown()).optional(),
|
|
18
|
+
status: rfpEditableStatusSchema.default("draft"),
|
|
19
|
+
issuedAt: z.string().datetime().optional(),
|
|
20
|
+
dueAt: z.string().datetime().optional(),
|
|
21
|
+
notes: z.string().optional(),
|
|
22
|
+
});
|
|
23
|
+
export const updateRfpSchema = createRfpSchema.partial().omit({ programId: true });
|
|
24
|
+
export const rfpListQuerySchema = z.object({
|
|
25
|
+
programId: z.string().min(1),
|
|
26
|
+
status: rfpStatusSchema.optional(),
|
|
27
|
+
limit: z.coerce.number().int().min(1).max(200).default(50),
|
|
28
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
29
|
+
});
|
|
30
|
+
export const inviteSupplierSchema = z.object({
|
|
31
|
+
supplierId: z.string().min(1),
|
|
32
|
+
});
|
|
33
|
+
export const createBidSchema = z.object({
|
|
34
|
+
supplierId: z.string().min(1),
|
|
35
|
+
status: bidEditableStatusSchema.default("draft"),
|
|
36
|
+
totalCents: z.number().int().min(0).optional(),
|
|
37
|
+
currency: z.string().optional(),
|
|
38
|
+
proposalDoc: z.string().optional(),
|
|
39
|
+
validUntil: z.string().datetime().optional(),
|
|
40
|
+
notes: z.string().optional(),
|
|
41
|
+
});
|
|
42
|
+
export const updateBidSchema = createBidSchema.partial().omit({ supplierId: true });
|
|
43
|
+
export const setBidLinesSchema = z.object({
|
|
44
|
+
lines: z.array(z.object({
|
|
45
|
+
requirementRef: z.string().optional(),
|
|
46
|
+
description: z.string().optional(),
|
|
47
|
+
quantity: z.number().int().min(1).default(1),
|
|
48
|
+
unitCents: z.number().int().min(0).optional(),
|
|
49
|
+
totalCents: z.number().int().min(0).optional(),
|
|
50
|
+
})),
|
|
51
|
+
});
|
|
52
|
+
export const addBidEvaluationSchema = z.object({
|
|
53
|
+
criterion: z.string().min(1),
|
|
54
|
+
weight: z.number().int().min(0).optional(),
|
|
55
|
+
score: z.number().int().min(0).optional(),
|
|
56
|
+
notes: z.string().optional(),
|
|
57
|
+
evaluatedBy: z.string().optional(),
|
|
58
|
+
});
|
|
59
|
+
export const awardRfpSchema = z.object({
|
|
60
|
+
bidId: z.string().min(1),
|
|
61
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const createRoomingAssignmentSchema: z.ZodObject<{
|
|
3
|
+
programId: z.ZodString;
|
|
4
|
+
roomBlockId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
roomTypeId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
bedConfig: z.ZodOptional<z.ZodString>;
|
|
7
|
+
sharingGroupId: z.ZodOptional<z.ZodString>;
|
|
8
|
+
checkIn: z.ZodOptional<z.ZodString>;
|
|
9
|
+
checkOut: z.ZodOptional<z.ZodString>;
|
|
10
|
+
specialRequests: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export declare const updateRoomingAssignmentSchema: z.ZodObject<{
|
|
13
|
+
roomBlockId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
14
|
+
roomTypeId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
15
|
+
bedConfig: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
sharingGroupId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
17
|
+
checkIn: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
18
|
+
checkOut: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
19
|
+
specialRequests: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
export declare const roomingListQuerySchema: z.ZodObject<{
|
|
22
|
+
programId: z.ZodString;
|
|
23
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
24
|
+
offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export declare const setRoomingDelegatesSchema: z.ZodObject<{
|
|
27
|
+
delegates: z.ZodArray<z.ZodObject<{
|
|
28
|
+
delegateId: z.ZodString;
|
|
29
|
+
isPrimary: z.ZodOptional<z.ZodBoolean>;
|
|
30
|
+
bedLabel: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
export type CreateRoomingAssignmentBody = z.infer<typeof createRoomingAssignmentSchema>;
|
|
34
|
+
export type UpdateRoomingAssignmentBody = z.infer<typeof updateRoomingAssignmentSchema>;
|
|
35
|
+
export type RoomingListQuery = z.infer<typeof roomingListQuerySchema>;
|
|
36
|
+
export type RoomingDelegateInput = z.infer<typeof setRoomingDelegatesSchema>["delegates"][number];
|
|
37
|
+
//# sourceMappingURL=validation-rooming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-rooming.d.ts","sourceRoot":"","sources":["../src/validation-rooming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,6BAA6B;;;;;;;;;iBASxC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;iBAEd,CAAA;AAE5B,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;iBASpC,CAAA;AAEF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACvF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACvF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const isoDate = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "expected YYYY-MM-DD");
|
|
3
|
+
export const createRoomingAssignmentSchema = z.object({
|
|
4
|
+
programId: z.string().min(1),
|
|
5
|
+
roomBlockId: z.string().min(1).optional(),
|
|
6
|
+
roomTypeId: z.string().min(1).optional(),
|
|
7
|
+
bedConfig: z.string().optional(),
|
|
8
|
+
sharingGroupId: z.string().optional(),
|
|
9
|
+
checkIn: isoDate.optional(),
|
|
10
|
+
checkOut: isoDate.optional(),
|
|
11
|
+
specialRequests: z.string().optional(),
|
|
12
|
+
});
|
|
13
|
+
export const updateRoomingAssignmentSchema = createRoomingAssignmentSchema
|
|
14
|
+
.partial()
|
|
15
|
+
.omit({ programId: true });
|
|
16
|
+
export const roomingListQuerySchema = z.object({
|
|
17
|
+
programId: z.string().min(1),
|
|
18
|
+
limit: z.coerce.number().int().min(1).max(500).default(100),
|
|
19
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
20
|
+
});
|
|
21
|
+
export const setRoomingDelegatesSchema = z.object({
|
|
22
|
+
// Full replace of occupants; an empty array clears the room.
|
|
23
|
+
delegates: z.array(z.object({
|
|
24
|
+
delegateId: z.string().min(1),
|
|
25
|
+
isPrimary: z.boolean().optional(),
|
|
26
|
+
bedLabel: z.string().optional(),
|
|
27
|
+
})),
|
|
28
|
+
});
|
|
@@ -39,8 +39,8 @@ export declare const createSessionSchema: z.ZodObject<{
|
|
|
39
39
|
export declare const updateSessionSchema: z.ZodObject<{
|
|
40
40
|
notes: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
41
41
|
capacity: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
42
|
-
functionSpaceId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
43
42
|
title: z.ZodOptional<z.ZodString>;
|
|
43
|
+
functionSpaceId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
44
44
|
sessionType: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
45
45
|
keynote: "keynote";
|
|
46
46
|
breakout: "breakout";
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
DO $$ BEGIN
|
|
2
|
+
CREATE TYPE "public"."mice_delegate_role" AS ENUM('attendee', 'speaker', 'sponsor', 'vip', 'staff', 'exhibitor', 'organizer');
|
|
3
|
+
EXCEPTION WHEN duplicate_object THEN null;
|
|
4
|
+
END $$;--> statement-breakpoint
|
|
5
|
+
DO $$ BEGIN
|
|
6
|
+
CREATE TYPE "public"."mice_delegate_status" AS ENUM('invited', 'registered', 'confirmed', 'checked_in', 'no_show', 'cancelled');
|
|
7
|
+
EXCEPTION WHEN duplicate_object THEN null;
|
|
8
|
+
END $$;--> statement-breakpoint
|
|
9
|
+
DO $$ BEGIN
|
|
10
|
+
CREATE TYPE "public"."mice_enrollment_status" AS ENUM('registered', 'waitlisted', 'attended', 'cancelled');
|
|
11
|
+
EXCEPTION WHEN duplicate_object THEN null;
|
|
12
|
+
END $$;--> statement-breakpoint
|
|
13
|
+
CREATE TABLE "booking_mice_details" (
|
|
14
|
+
"booking_id" text PRIMARY KEY NOT NULL,
|
|
15
|
+
"program_id" text,
|
|
16
|
+
"delegate_id" text,
|
|
17
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
18
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
19
|
+
);
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
CREATE TABLE "mice_delegate_session_enrollments" (
|
|
22
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
23
|
+
"delegate_id" text NOT NULL,
|
|
24
|
+
"session_id" text NOT NULL,
|
|
25
|
+
"status" "mice_enrollment_status" DEFAULT 'registered' NOT NULL,
|
|
26
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
27
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
28
|
+
);
|
|
29
|
+
--> statement-breakpoint
|
|
30
|
+
CREATE TABLE "mice_program_delegates" (
|
|
31
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
32
|
+
"program_id" text NOT NULL,
|
|
33
|
+
"person_id" text,
|
|
34
|
+
"booking_id" text,
|
|
35
|
+
"role" "mice_delegate_role" DEFAULT 'attendee' NOT NULL,
|
|
36
|
+
"status" "mice_delegate_status" DEFAULT 'invited' NOT NULL,
|
|
37
|
+
"arrival_at" timestamp with time zone,
|
|
38
|
+
"departure_at" timestamp with time zone,
|
|
39
|
+
"notes" text,
|
|
40
|
+
"metadata" jsonb,
|
|
41
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
42
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
43
|
+
);
|
|
44
|
+
--> statement-breakpoint
|
|
45
|
+
CREATE TABLE "mice_rooming_assignment_delegates" (
|
|
46
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
47
|
+
"rooming_assignment_id" text NOT NULL,
|
|
48
|
+
"delegate_id" text NOT NULL,
|
|
49
|
+
"is_primary" boolean DEFAULT false NOT NULL,
|
|
50
|
+
"bed_label" text,
|
|
51
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
52
|
+
);
|
|
53
|
+
--> statement-breakpoint
|
|
54
|
+
CREATE TABLE "mice_rooming_assignments" (
|
|
55
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
56
|
+
"program_id" text NOT NULL,
|
|
57
|
+
"room_block_id" text,
|
|
58
|
+
"room_type_id" text,
|
|
59
|
+
"bed_config" text,
|
|
60
|
+
"sharing_group_id" text,
|
|
61
|
+
"check_in" date,
|
|
62
|
+
"check_out" date,
|
|
63
|
+
"special_requests" text,
|
|
64
|
+
"metadata" jsonb,
|
|
65
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
66
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
67
|
+
);
|
|
68
|
+
--> statement-breakpoint
|
|
69
|
+
ALTER TABLE "mice_delegate_session_enrollments" ADD CONSTRAINT "mice_delegate_session_enrollments_delegate_id_mice_program_delegates_id_fk" FOREIGN KEY ("delegate_id") REFERENCES "public"."mice_program_delegates"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
70
|
+
ALTER TABLE "mice_delegate_session_enrollments" ADD CONSTRAINT "mice_delegate_session_enrollments_session_id_mice_program_sessions_id_fk" FOREIGN KEY ("session_id") REFERENCES "public"."mice_program_sessions"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
71
|
+
ALTER TABLE "mice_program_delegates" ADD CONSTRAINT "mice_program_delegates_program_id_mice_programs_id_fk" FOREIGN KEY ("program_id") REFERENCES "public"."mice_programs"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
72
|
+
ALTER TABLE "mice_rooming_assignment_delegates" ADD CONSTRAINT "mice_rooming_assignment_delegates_rooming_assignment_id_mice_rooming_assignments_id_fk" FOREIGN KEY ("rooming_assignment_id") REFERENCES "public"."mice_rooming_assignments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
73
|
+
ALTER TABLE "mice_rooming_assignment_delegates" ADD CONSTRAINT "mice_rooming_assignment_delegates_delegate_id_mice_program_delegates_id_fk" FOREIGN KEY ("delegate_id") REFERENCES "public"."mice_program_delegates"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
74
|
+
ALTER TABLE "mice_rooming_assignments" ADD CONSTRAINT "mice_rooming_assignments_program_id_mice_programs_id_fk" FOREIGN KEY ("program_id") REFERENCES "public"."mice_programs"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
75
|
+
CREATE INDEX "idx_bkmd_program" ON "booking_mice_details" USING btree ("program_id");--> statement-breakpoint
|
|
76
|
+
CREATE INDEX "idx_bkmd_delegate" ON "booking_mice_details" USING btree ("delegate_id");--> statement-breakpoint
|
|
77
|
+
CREATE INDEX "idx_mice_enrollments_session" ON "mice_delegate_session_enrollments" USING btree ("session_id");--> statement-breakpoint
|
|
78
|
+
CREATE UNIQUE INDEX "uidx_mice_enrollments_delegate_session" ON "mice_delegate_session_enrollments" USING btree ("delegate_id","session_id");--> statement-breakpoint
|
|
79
|
+
CREATE INDEX "idx_mice_program_delegates_program" ON "mice_program_delegates" USING btree ("program_id");--> statement-breakpoint
|
|
80
|
+
CREATE INDEX "idx_mice_program_delegates_program_status" ON "mice_program_delegates" USING btree ("program_id","status");--> statement-breakpoint
|
|
81
|
+
CREATE INDEX "idx_mice_program_delegates_person" ON "mice_program_delegates" USING btree ("person_id");--> statement-breakpoint
|
|
82
|
+
CREATE INDEX "idx_mice_program_delegates_booking" ON "mice_program_delegates" USING btree ("booking_id");--> statement-breakpoint
|
|
83
|
+
CREATE INDEX "idx_mice_rooming_assignment_delegates_assignment" ON "mice_rooming_assignment_delegates" USING btree ("rooming_assignment_id");--> statement-breakpoint
|
|
84
|
+
CREATE UNIQUE INDEX "uidx_mice_rooming_assignment_delegates_pair" ON "mice_rooming_assignment_delegates" USING btree ("rooming_assignment_id","delegate_id");--> statement-breakpoint
|
|
85
|
+
CREATE INDEX "idx_mice_rooming_assignments_program" ON "mice_rooming_assignments" USING btree ("program_id");--> statement-breakpoint
|
|
86
|
+
CREATE INDEX "idx_mice_rooming_assignments_room_block" ON "mice_rooming_assignments" USING btree ("room_block_id");
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
DO $$ BEGIN
|
|
2
|
+
CREATE TYPE "public"."mice_bid_status" AS ENUM('draft', 'submitted', 'under_review', 'accepted', 'rejected');
|
|
3
|
+
EXCEPTION WHEN duplicate_object THEN null;
|
|
4
|
+
END $$;--> statement-breakpoint
|
|
5
|
+
DO $$ BEGIN
|
|
6
|
+
CREATE TYPE "public"."mice_rfp_invitation_status" AS ENUM('invited', 'viewed', 'declined', 'responded');
|
|
7
|
+
EXCEPTION WHEN duplicate_object THEN null;
|
|
8
|
+
END $$;--> statement-breakpoint
|
|
9
|
+
DO $$ BEGIN
|
|
10
|
+
CREATE TYPE "public"."mice_rfp_status" AS ENUM('draft', 'issued', 'closed', 'awarded', 'cancelled');
|
|
11
|
+
EXCEPTION WHEN duplicate_object THEN null;
|
|
12
|
+
END $$;--> statement-breakpoint
|
|
13
|
+
CREATE TABLE "mice_bid_evaluations" (
|
|
14
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
15
|
+
"bid_id" text NOT NULL,
|
|
16
|
+
"criterion" text NOT NULL,
|
|
17
|
+
"weight" integer,
|
|
18
|
+
"score" integer,
|
|
19
|
+
"notes" text,
|
|
20
|
+
"evaluated_by" text,
|
|
21
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
22
|
+
);
|
|
23
|
+
--> statement-breakpoint
|
|
24
|
+
CREATE TABLE "mice_bid_lines" (
|
|
25
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
26
|
+
"bid_id" text NOT NULL,
|
|
27
|
+
"requirement_ref" text,
|
|
28
|
+
"description" text,
|
|
29
|
+
"quantity" integer DEFAULT 1 NOT NULL,
|
|
30
|
+
"unit_cents" integer,
|
|
31
|
+
"total_cents" integer,
|
|
32
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
33
|
+
);
|
|
34
|
+
--> statement-breakpoint
|
|
35
|
+
CREATE TABLE "mice_bids" (
|
|
36
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
37
|
+
"rfp_id" text NOT NULL,
|
|
38
|
+
"supplier_id" text NOT NULL,
|
|
39
|
+
"status" "mice_bid_status" DEFAULT 'draft' NOT NULL,
|
|
40
|
+
"total_cents" integer,
|
|
41
|
+
"currency" text,
|
|
42
|
+
"proposal_doc" text,
|
|
43
|
+
"valid_until" timestamp with time zone,
|
|
44
|
+
"notes" text,
|
|
45
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
46
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
47
|
+
);
|
|
48
|
+
--> statement-breakpoint
|
|
49
|
+
CREATE TABLE "mice_rfp_invitations" (
|
|
50
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
51
|
+
"rfp_id" text NOT NULL,
|
|
52
|
+
"supplier_id" text NOT NULL,
|
|
53
|
+
"status" "mice_rfp_invitation_status" DEFAULT 'invited' NOT NULL,
|
|
54
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
55
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
56
|
+
);
|
|
57
|
+
--> statement-breakpoint
|
|
58
|
+
CREATE TABLE "mice_rfps" (
|
|
59
|
+
"id" text PRIMARY KEY NOT NULL,
|
|
60
|
+
"program_id" text NOT NULL,
|
|
61
|
+
"title" text NOT NULL,
|
|
62
|
+
"requirements" jsonb,
|
|
63
|
+
"status" "mice_rfp_status" DEFAULT 'draft' NOT NULL,
|
|
64
|
+
"issued_at" timestamp with time zone,
|
|
65
|
+
"due_at" timestamp with time zone,
|
|
66
|
+
"notes" text,
|
|
67
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
68
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
69
|
+
);
|
|
70
|
+
--> statement-breakpoint
|
|
71
|
+
ALTER TABLE "mice_bid_evaluations" ADD CONSTRAINT "mice_bid_evaluations_bid_id_mice_bids_id_fk" FOREIGN KEY ("bid_id") REFERENCES "public"."mice_bids"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
72
|
+
ALTER TABLE "mice_bid_lines" ADD CONSTRAINT "mice_bid_lines_bid_id_mice_bids_id_fk" FOREIGN KEY ("bid_id") REFERENCES "public"."mice_bids"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
73
|
+
ALTER TABLE "mice_bids" ADD CONSTRAINT "mice_bids_rfp_id_mice_rfps_id_fk" FOREIGN KEY ("rfp_id") REFERENCES "public"."mice_rfps"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
74
|
+
ALTER TABLE "mice_rfp_invitations" ADD CONSTRAINT "mice_rfp_invitations_rfp_id_mice_rfps_id_fk" FOREIGN KEY ("rfp_id") REFERENCES "public"."mice_rfps"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
75
|
+
ALTER TABLE "mice_rfps" ADD CONSTRAINT "mice_rfps_program_id_mice_programs_id_fk" FOREIGN KEY ("program_id") REFERENCES "public"."mice_programs"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
76
|
+
CREATE INDEX "idx_mice_bid_evaluations_bid" ON "mice_bid_evaluations" USING btree ("bid_id");--> statement-breakpoint
|
|
77
|
+
CREATE INDEX "idx_mice_bid_lines_bid" ON "mice_bid_lines" USING btree ("bid_id");--> statement-breakpoint
|
|
78
|
+
CREATE INDEX "idx_mice_bids_rfp" ON "mice_bids" USING btree ("rfp_id");--> statement-breakpoint
|
|
79
|
+
CREATE INDEX "idx_mice_bids_supplier" ON "mice_bids" USING btree ("supplier_id");--> statement-breakpoint
|
|
80
|
+
CREATE INDEX "idx_mice_bids_status" ON "mice_bids" USING btree ("status");--> statement-breakpoint
|
|
81
|
+
CREATE INDEX "idx_mice_rfp_invitations_supplier" ON "mice_rfp_invitations" USING btree ("supplier_id");--> statement-breakpoint
|
|
82
|
+
CREATE UNIQUE INDEX "uidx_mice_rfp_invitations_rfp_supplier" ON "mice_rfp_invitations" USING btree ("rfp_id","supplier_id");--> statement-breakpoint
|
|
83
|
+
CREATE INDEX "idx_mice_rfps_program" ON "mice_rfps" USING btree ("program_id");--> statement-breakpoint
|
|
84
|
+
CREATE INDEX "idx_mice_rfps_status" ON "mice_rfps" USING btree ("status");
|
|
@@ -15,6 +15,20 @@
|
|
|
15
15
|
"when": 1782153566121,
|
|
16
16
|
"tag": "0001_mice_baseline",
|
|
17
17
|
"breakpoints": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"idx": 2,
|
|
21
|
+
"version": "7",
|
|
22
|
+
"when": 1782157604027,
|
|
23
|
+
"tag": "0002_mice_baseline",
|
|
24
|
+
"breakpoints": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"idx": 3,
|
|
28
|
+
"version": "7",
|
|
29
|
+
"when": 1782181473510,
|
|
30
|
+
"tag": "0003_mice_baseline",
|
|
31
|
+
"breakpoints": true
|
|
18
32
|
}
|
|
19
33
|
]
|
|
20
34
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyant-travel/mice",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
"types": "./dist/routes.d.ts",
|
|
24
24
|
"import": "./dist/routes.js",
|
|
25
25
|
"default": "./dist/routes.js"
|
|
26
|
+
},
|
|
27
|
+
"./booking-extension": {
|
|
28
|
+
"types": "./dist/booking-extension.d.ts",
|
|
29
|
+
"import": "./dist/booking-extension.js",
|
|
30
|
+
"default": "./dist/booking-extension.js"
|
|
26
31
|
}
|
|
27
32
|
},
|
|
28
33
|
"dependencies": {
|
|
@@ -30,8 +35,8 @@
|
|
|
30
35
|
"hono": "^4.12.10",
|
|
31
36
|
"zod": "^4.3.6",
|
|
32
37
|
"@voyant-travel/core": "^0.111.0",
|
|
33
|
-
"@voyant-travel/db": "^0.109.
|
|
34
|
-
"@voyant-travel/hono": "^0.116.
|
|
38
|
+
"@voyant-travel/db": "^0.109.4",
|
|
39
|
+
"@voyant-travel/hono": "^0.116.1"
|
|
35
40
|
},
|
|
36
41
|
"devDependencies": {
|
|
37
42
|
"drizzle-kit": "^0.31.10",
|