@voyant-travel/availability 0.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-pickups.d.ts","sourceRoot":"","sources":["../src/schema-pickups.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBpC,CAAA;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBnC,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BjC,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BxB,CAAA;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC3B,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B/B,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB7B,CAAA"}
@@ -0,0 +1,140 @@
1
+ import { typeId, typeIdRef } from "@voyant-travel/db/lib/typeid-column";
2
+ import { boolean, index, integer, pgTable, text, timestamp } from "drizzle-orm/pg-core";
3
+ import { availabilitySlots, availabilityStartTimes, meetingModeEnum, pickupGroupKindEnum, pickupTimingModeEnum, } from "./schema-core.js";
4
+ export const availabilityPickupPoints = pgTable("availability_pickup_points", {
5
+ id: typeId("availability_pickup_points"),
6
+ productId: text("product_id").notNull(),
7
+ facilityId: text("facility_id"),
8
+ name: text("name").notNull(),
9
+ description: text("description"),
10
+ locationText: text("location_text"),
11
+ active: boolean("active").notNull().default(true),
12
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
13
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
14
+ }, (table) => [
15
+ index("idx_availability_pickup_points_created").on(table.createdAt),
16
+ index("idx_availability_pickup_points_product_created").on(table.productId, table.createdAt),
17
+ index("idx_availability_pickup_points_facility_created").on(table.facilityId, table.createdAt),
18
+ index("idx_availability_pickup_points_active_created").on(table.active, table.createdAt),
19
+ ]);
20
+ export const availabilitySlotPickups = pgTable("availability_slot_pickups", {
21
+ id: typeId("availability_slot_pickups"),
22
+ slotId: typeIdRef("slot_id")
23
+ .notNull()
24
+ .references(() => availabilitySlots.id, { onDelete: "cascade" }),
25
+ pickupPointId: typeIdRef("pickup_point_id")
26
+ .notNull()
27
+ .references(() => availabilityPickupPoints.id, { onDelete: "cascade" }),
28
+ initialCapacity: integer("initial_capacity"),
29
+ remainingCapacity: integer("remaining_capacity"),
30
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
31
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
32
+ }, (table) => [
33
+ index("idx_availability_slot_pickups_created").on(table.createdAt),
34
+ index("idx_availability_slot_pickups_slot_created").on(table.slotId, table.createdAt),
35
+ index("idx_availability_slot_pickups_pickup_point_created").on(table.pickupPointId, table.createdAt),
36
+ ]);
37
+ export const productMeetingConfigs = pgTable("product_meeting_configs", {
38
+ id: typeId("product_meeting_configs"),
39
+ productId: text("product_id").notNull(),
40
+ optionId: text("option_id"),
41
+ facilityId: text("facility_id"),
42
+ mode: meetingModeEnum("mode").notNull().default("meeting_only"),
43
+ allowCustomPickup: boolean("allow_custom_pickup").notNull().default(false),
44
+ allowCustomDropoff: boolean("allow_custom_dropoff").notNull().default(false),
45
+ requiresPickupSelection: boolean("requires_pickup_selection").notNull().default(false),
46
+ requiresDropoffSelection: boolean("requires_dropoff_selection").notNull().default(false),
47
+ usePickupAllotment: boolean("use_pickup_allotment").notNull().default(false),
48
+ meetingInstructions: text("meeting_instructions"),
49
+ pickupInstructions: text("pickup_instructions"),
50
+ dropoffInstructions: text("dropoff_instructions"),
51
+ active: boolean("active").notNull().default(true),
52
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
53
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
54
+ }, (table) => [
55
+ index("idx_product_meeting_configs_updated").on(table.updatedAt),
56
+ index("idx_product_meeting_configs_product_updated").on(table.productId, table.updatedAt),
57
+ index("idx_product_meeting_configs_option_updated").on(table.optionId, table.updatedAt),
58
+ index("idx_product_meeting_configs_facility_updated").on(table.facilityId, table.updatedAt),
59
+ index("idx_product_meeting_configs_mode_updated").on(table.mode, table.updatedAt),
60
+ index("idx_product_meeting_configs_active_updated").on(table.active, table.updatedAt),
61
+ ]);
62
+ export const pickupGroups = pgTable("pickup_groups", {
63
+ id: typeId("pickup_groups"),
64
+ meetingConfigId: typeIdRef("meeting_config_id")
65
+ .notNull()
66
+ .references(() => productMeetingConfigs.id, { onDelete: "cascade" }),
67
+ kind: pickupGroupKindEnum("kind").notNull(),
68
+ name: text("name").notNull(),
69
+ description: text("description"),
70
+ active: boolean("active").notNull().default(true),
71
+ sortOrder: integer("sort_order").notNull().default(0),
72
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
73
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
74
+ }, (table) => [
75
+ index("idx_pickup_groups_sort_created").on(table.sortOrder, table.createdAt),
76
+ index("idx_pickup_groups_meeting_config_sort_created").on(table.meetingConfigId, table.sortOrder, table.createdAt),
77
+ index("idx_pickup_groups_kind_sort_created").on(table.kind, table.sortOrder, table.createdAt),
78
+ index("idx_pickup_groups_active_sort_created").on(table.active, table.sortOrder, table.createdAt),
79
+ ]);
80
+ export const pickupLocations = pgTable("pickup_locations", {
81
+ id: typeId("pickup_locations"),
82
+ groupId: typeIdRef("group_id")
83
+ .notNull()
84
+ .references(() => pickupGroups.id, { onDelete: "cascade" }),
85
+ facilityId: text("facility_id"),
86
+ name: text("name").notNull(),
87
+ description: text("description"),
88
+ locationText: text("location_text"),
89
+ leadTimeMinutes: integer("lead_time_minutes"),
90
+ active: boolean("active").notNull().default(true),
91
+ sortOrder: integer("sort_order").notNull().default(0),
92
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
93
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
94
+ }, (table) => [
95
+ index("idx_pickup_locations_sort_created").on(table.sortOrder, table.createdAt),
96
+ index("idx_pickup_locations_group_sort_created").on(table.groupId, table.sortOrder, table.createdAt),
97
+ index("idx_pickup_locations_facility_sort_created").on(table.facilityId, table.sortOrder, table.createdAt),
98
+ index("idx_pickup_locations_active_sort_created").on(table.active, table.sortOrder, table.createdAt),
99
+ ]);
100
+ export const locationPickupTimes = pgTable("location_pickup_times", {
101
+ id: typeId("location_pickup_times"),
102
+ pickupLocationId: typeIdRef("pickup_location_id")
103
+ .notNull()
104
+ .references(() => pickupLocations.id, { onDelete: "cascade" }),
105
+ slotId: typeIdRef("slot_id").references(() => availabilitySlots.id, { onDelete: "cascade" }),
106
+ startTimeId: typeIdRef("start_time_id").references(() => availabilityStartTimes.id, {
107
+ onDelete: "set null",
108
+ }),
109
+ timingMode: pickupTimingModeEnum("timing_mode").notNull().default("fixed_time"),
110
+ localTime: text("local_time"),
111
+ offsetMinutes: integer("offset_minutes"),
112
+ instructions: text("instructions"),
113
+ initialCapacity: integer("initial_capacity"),
114
+ remainingCapacity: integer("remaining_capacity"),
115
+ active: boolean("active").notNull().default(true),
116
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
117
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
118
+ }, (table) => [
119
+ index("idx_location_pickup_times_created").on(table.createdAt),
120
+ index("idx_location_pickup_times_pickup_location_created").on(table.pickupLocationId, table.createdAt),
121
+ index("idx_location_pickup_times_slot_created").on(table.slotId, table.createdAt),
122
+ index("idx_location_pickup_times_start_time_created").on(table.startTimeId, table.createdAt),
123
+ index("idx_location_pickup_times_active_created").on(table.active, table.createdAt),
124
+ ]);
125
+ export const customPickupAreas = pgTable("custom_pickup_areas", {
126
+ id: typeId("custom_pickup_areas"),
127
+ meetingConfigId: typeIdRef("meeting_config_id")
128
+ .notNull()
129
+ .references(() => productMeetingConfigs.id, { onDelete: "cascade" }),
130
+ name: text("name").notNull(),
131
+ description: text("description"),
132
+ geographicText: text("geographic_text"),
133
+ active: boolean("active").notNull().default(true),
134
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
135
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
136
+ }, (table) => [
137
+ index("idx_custom_pickup_areas_created").on(table.createdAt),
138
+ index("idx_custom_pickup_areas_meeting_config_created").on(table.meetingConfigId, table.createdAt),
139
+ index("idx_custom_pickup_areas_active_created").on(table.active, table.createdAt),
140
+ ]);
@@ -0,0 +1,82 @@
1
+ import { type allocationAuditLog, allocationResources, availabilityCloseouts, availabilityRules, availabilitySlots, availabilityStartTimes, productOptionResourceTemplates, type sharingGroupLabels } from "./schema-core.js";
2
+ import { availabilityPickupPoints, availabilitySlotPickups, customPickupAreas, locationPickupTimes, pickupGroups, pickupLocations, productMeetingConfigs } from "./schema-pickups.js";
3
+ export type AvailabilityRule = typeof availabilityRules.$inferSelect;
4
+ export type NewAvailabilityRule = typeof availabilityRules.$inferInsert;
5
+ export type AvailabilityStartTime = typeof availabilityStartTimes.$inferSelect;
6
+ export type NewAvailabilityStartTime = typeof availabilityStartTimes.$inferInsert;
7
+ export type AvailabilitySlot = typeof availabilitySlots.$inferSelect;
8
+ export type NewAvailabilitySlot = typeof availabilitySlots.$inferInsert;
9
+ export type AvailabilityCloseout = typeof availabilityCloseouts.$inferSelect;
10
+ export type NewAvailabilityCloseout = typeof availabilityCloseouts.$inferInsert;
11
+ export type AllocationResource = typeof allocationResources.$inferSelect;
12
+ export type NewAllocationResource = typeof allocationResources.$inferInsert;
13
+ export type SharingGroupLabel = typeof sharingGroupLabels.$inferSelect;
14
+ export type NewSharingGroupLabel = typeof sharingGroupLabels.$inferInsert;
15
+ export type AllocationAuditLog = typeof allocationAuditLog.$inferSelect;
16
+ export type NewAllocationAuditLog = typeof allocationAuditLog.$inferInsert;
17
+ export type ProductOptionResourceTemplate = typeof productOptionResourceTemplates.$inferSelect;
18
+ export type NewProductOptionResourceTemplate = typeof productOptionResourceTemplates.$inferInsert;
19
+ export type AvailabilityPickupPoint = typeof availabilityPickupPoints.$inferSelect;
20
+ export type NewAvailabilityPickupPoint = typeof availabilityPickupPoints.$inferInsert;
21
+ export type AvailabilitySlotPickup = typeof availabilitySlotPickups.$inferSelect;
22
+ export type NewAvailabilitySlotPickup = typeof availabilitySlotPickups.$inferInsert;
23
+ export type ProductMeetingConfig = typeof productMeetingConfigs.$inferSelect;
24
+ export type NewProductMeetingConfig = typeof productMeetingConfigs.$inferInsert;
25
+ export type PickupGroup = typeof pickupGroups.$inferSelect;
26
+ export type NewPickupGroup = typeof pickupGroups.$inferInsert;
27
+ export type PickupLocation = typeof pickupLocations.$inferSelect;
28
+ export type NewPickupLocation = typeof pickupLocations.$inferInsert;
29
+ export type LocationPickupTime = typeof locationPickupTimes.$inferSelect;
30
+ export type NewLocationPickupTime = typeof locationPickupTimes.$inferInsert;
31
+ export type CustomPickupArea = typeof customPickupAreas.$inferSelect;
32
+ export type NewCustomPickupArea = typeof customPickupAreas.$inferInsert;
33
+ export declare const availabilityRulesRelations: import("drizzle-orm").Relations<"availability_rules", {
34
+ slots: import("drizzle-orm").Many<"availability_slots">;
35
+ }>;
36
+ export declare const availabilityStartTimesRelations: import("drizzle-orm").Relations<"availability_start_times", {
37
+ slots: import("drizzle-orm").Many<"availability_slots">;
38
+ locationPickupTimes: import("drizzle-orm").Many<"location_pickup_times">;
39
+ }>;
40
+ export declare const availabilitySlotsRelations: import("drizzle-orm").Relations<"availability_slots", {
41
+ rule: import("drizzle-orm").One<"availability_rules", false>;
42
+ startTime: import("drizzle-orm").One<"availability_start_times", false>;
43
+ pickups: import("drizzle-orm").Many<"availability_slot_pickups">;
44
+ closeouts: import("drizzle-orm").Many<"availability_closeouts">;
45
+ locationPickupTimes: import("drizzle-orm").Many<"location_pickup_times">;
46
+ allocationResources: import("drizzle-orm").Many<"allocation_resources">;
47
+ }>;
48
+ export declare const availabilityCloseoutsRelations: import("drizzle-orm").Relations<"availability_closeouts", {
49
+ slot: import("drizzle-orm").One<"availability_slots", false>;
50
+ }>;
51
+ export declare const allocationResourcesRelations: import("drizzle-orm").Relations<"allocation_resources", {
52
+ slot: import("drizzle-orm").One<"availability_slots", true>;
53
+ }>;
54
+ export declare const productOptionResourceTemplatesRelations: import("drizzle-orm").Relations<"product_option_resource_templates", {}>;
55
+ export declare const availabilityPickupPointsRelations: import("drizzle-orm").Relations<"availability_pickup_points", {
56
+ slotPickups: import("drizzle-orm").Many<"availability_slot_pickups">;
57
+ }>;
58
+ export declare const availabilitySlotPickupsRelations: import("drizzle-orm").Relations<"availability_slot_pickups", {
59
+ slot: import("drizzle-orm").One<"availability_slots", true>;
60
+ pickupPoint: import("drizzle-orm").One<"availability_pickup_points", true>;
61
+ }>;
62
+ export declare const productMeetingConfigsRelations: import("drizzle-orm").Relations<"product_meeting_configs", {
63
+ pickupGroups: import("drizzle-orm").Many<"pickup_groups">;
64
+ customPickupAreas: import("drizzle-orm").Many<"custom_pickup_areas">;
65
+ }>;
66
+ export declare const pickupGroupsRelations: import("drizzle-orm").Relations<"pickup_groups", {
67
+ meetingConfig: import("drizzle-orm").One<"product_meeting_configs", true>;
68
+ locations: import("drizzle-orm").Many<"pickup_locations">;
69
+ }>;
70
+ export declare const pickupLocationsRelations: import("drizzle-orm").Relations<"pickup_locations", {
71
+ group: import("drizzle-orm").One<"pickup_groups", true>;
72
+ pickupTimes: import("drizzle-orm").Many<"location_pickup_times">;
73
+ }>;
74
+ export declare const locationPickupTimesRelations: import("drizzle-orm").Relations<"location_pickup_times", {
75
+ pickupLocation: import("drizzle-orm").One<"pickup_locations", true>;
76
+ slot: import("drizzle-orm").One<"availability_slots", false>;
77
+ startTime: import("drizzle-orm").One<"availability_start_times", false>;
78
+ }>;
79
+ export declare const customPickupAreasRelations: import("drizzle-orm").Relations<"custom_pickup_areas", {
80
+ meetingConfig: import("drizzle-orm").One<"product_meeting_configs", true>;
81
+ }>;
82
+ //# sourceMappingURL=schema-relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-relations.d.ts","sourceRoot":"","sources":["../src/schema-relations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { relations } from "drizzle-orm";
2
+ import { allocationResources, availabilityCloseouts, availabilityRules, availabilitySlots, availabilityStartTimes, productOptionResourceTemplates, } from "./schema-core.js";
3
+ import { availabilityPickupPoints, availabilitySlotPickups, customPickupAreas, locationPickupTimes, pickupGroups, pickupLocations, productMeetingConfigs, } from "./schema-pickups.js";
4
+ export const availabilityRulesRelations = relations(availabilityRules, ({ many }) => ({
5
+ slots: many(availabilitySlots),
6
+ }));
7
+ export const availabilityStartTimesRelations = relations(availabilityStartTimes, ({ many }) => ({
8
+ slots: many(availabilitySlots),
9
+ locationPickupTimes: many(locationPickupTimes),
10
+ }));
11
+ export const availabilitySlotsRelations = relations(availabilitySlots, ({ one, many }) => ({
12
+ rule: one(availabilityRules, {
13
+ fields: [availabilitySlots.availabilityRuleId],
14
+ references: [availabilityRules.id],
15
+ }),
16
+ startTime: one(availabilityStartTimes, {
17
+ fields: [availabilitySlots.startTimeId],
18
+ references: [availabilityStartTimes.id],
19
+ }),
20
+ pickups: many(availabilitySlotPickups),
21
+ closeouts: many(availabilityCloseouts),
22
+ locationPickupTimes: many(locationPickupTimes),
23
+ allocationResources: many(allocationResources),
24
+ }));
25
+ export const availabilityCloseoutsRelations = relations(availabilityCloseouts, ({ one }) => ({
26
+ slot: one(availabilitySlots, {
27
+ fields: [availabilityCloseouts.slotId],
28
+ references: [availabilitySlots.id],
29
+ }),
30
+ }));
31
+ export const allocationResourcesRelations = relations(allocationResources, ({ one }) => ({
32
+ slot: one(availabilitySlots, {
33
+ fields: [allocationResources.slotId],
34
+ references: [availabilitySlots.id],
35
+ }),
36
+ }));
37
+ export const productOptionResourceTemplatesRelations = relations(productOptionResourceTemplates, () => ({}));
38
+ export const availabilityPickupPointsRelations = relations(availabilityPickupPoints, ({ many }) => ({
39
+ slotPickups: many(availabilitySlotPickups),
40
+ }));
41
+ export const availabilitySlotPickupsRelations = relations(availabilitySlotPickups, ({ one }) => ({
42
+ slot: one(availabilitySlots, {
43
+ fields: [availabilitySlotPickups.slotId],
44
+ references: [availabilitySlots.id],
45
+ }),
46
+ pickupPoint: one(availabilityPickupPoints, {
47
+ fields: [availabilitySlotPickups.pickupPointId],
48
+ references: [availabilityPickupPoints.id],
49
+ }),
50
+ }));
51
+ export const productMeetingConfigsRelations = relations(productMeetingConfigs, ({ many }) => ({
52
+ pickupGroups: many(pickupGroups),
53
+ customPickupAreas: many(customPickupAreas),
54
+ }));
55
+ export const pickupGroupsRelations = relations(pickupGroups, ({ one, many }) => ({
56
+ meetingConfig: one(productMeetingConfigs, {
57
+ fields: [pickupGroups.meetingConfigId],
58
+ references: [productMeetingConfigs.id],
59
+ }),
60
+ locations: many(pickupLocations),
61
+ }));
62
+ export const pickupLocationsRelations = relations(pickupLocations, ({ one, many }) => ({
63
+ group: one(pickupGroups, {
64
+ fields: [pickupLocations.groupId],
65
+ references: [pickupGroups.id],
66
+ }),
67
+ pickupTimes: many(locationPickupTimes),
68
+ }));
69
+ export const locationPickupTimesRelations = relations(locationPickupTimes, ({ one }) => ({
70
+ pickupLocation: one(pickupLocations, {
71
+ fields: [locationPickupTimes.pickupLocationId],
72
+ references: [pickupLocations.id],
73
+ }),
74
+ slot: one(availabilitySlots, {
75
+ fields: [locationPickupTimes.slotId],
76
+ references: [availabilitySlots.id],
77
+ }),
78
+ startTime: one(availabilityStartTimes, {
79
+ fields: [locationPickupTimes.startTimeId],
80
+ references: [availabilityStartTimes.id],
81
+ }),
82
+ }));
83
+ export const customPickupAreasRelations = relations(customPickupAreas, ({ one }) => ({
84
+ meetingConfig: one(productMeetingConfigs, {
85
+ fields: [customPickupAreas.meetingConfigId],
86
+ references: [productMeetingConfigs.id],
87
+ }),
88
+ }));
@@ -0,0 +1,5 @@
1
+ export * from "./schema-core.js";
2
+ export * from "./schema-holds.js";
3
+ export * from "./schema-pickups.js";
4
+ export * from "./schema-relations.js";
5
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA"}
package/dist/schema.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./schema-core.js";
2
+ export * from "./schema-holds.js";
3
+ export * from "./schema-pickups.js";
4
+ export * from "./schema-relations.js";