@voyantjs/products 0.1.1 → 0.3.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.
Files changed (39) hide show
  1. package/dist/routes.d.ts +4 -4
  2. package/dist/schema-core.d.ts +897 -0
  3. package/dist/schema-core.d.ts.map +1 -0
  4. package/dist/schema-core.js +77 -0
  5. package/dist/schema-itinerary.d.ts +828 -0
  6. package/dist/schema-itinerary.d.ts.map +1 -0
  7. package/dist/schema-itinerary.js +77 -0
  8. package/dist/schema-relations.d.ts +99 -0
  9. package/dist/schema-relations.d.ts.map +1 -0
  10. package/dist/schema-relations.js +155 -0
  11. package/dist/schema-settings.d.ts +1749 -0
  12. package/dist/schema-settings.d.ts.map +1 -0
  13. package/dist/schema-settings.js +175 -0
  14. package/dist/schema-shared.d.ts +15 -0
  15. package/dist/schema-shared.d.ts.map +1 -0
  16. package/dist/schema-shared.js +91 -0
  17. package/dist/schema-taxonomy.d.ts +573 -0
  18. package/dist/schema-taxonomy.d.ts.map +1 -0
  19. package/dist/schema-taxonomy.js +65 -0
  20. package/dist/schema.d.ts +6 -4155
  21. package/dist/schema.d.ts.map +1 -1
  22. package/dist/schema.js +6 -653
  23. package/dist/service.d.ts +4 -4
  24. package/dist/validation-config.d.ts +233 -0
  25. package/dist/validation-config.d.ts.map +1 -0
  26. package/dist/validation-config.js +73 -0
  27. package/dist/validation-content.d.ts +358 -0
  28. package/dist/validation-content.d.ts.map +1 -0
  29. package/dist/validation-content.js +177 -0
  30. package/dist/validation-core.d.ts +268 -0
  31. package/dist/validation-core.d.ts.map +1 -0
  32. package/dist/validation-core.js +91 -0
  33. package/dist/validation-shared.d.ts +103 -0
  34. package/dist/validation-shared.d.ts.map +1 -0
  35. package/dist/validation-shared.js +86 -0
  36. package/dist/validation.d.ts +4 -854
  37. package/dist/validation.d.ts.map +1 -1
  38. package/dist/validation.js +4 -433
  39. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-settings.d.ts","sourceRoot":"","sources":["../src/schema-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ import { typeId, typeIdRef } from "@voyantjs/db/lib/typeid-column";
2
+ import { boolean, doublePrecision, index, integer, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
3
+ import { optionUnits, productOptions, products } from "./schema-core";
4
+ import { productActivationModeEnum, productCapabilityEnum, productDeliveryFormatEnum, productFeatureTypeEnum, productLocationTypeEnum, productTicketFulfillmentEnum, } from "./schema-shared";
5
+ export const productActivationSettings = pgTable("product_activation_settings", {
6
+ id: typeId("product_activation_settings"),
7
+ productId: typeIdRef("product_id")
8
+ .notNull()
9
+ .references(() => products.id, { onDelete: "cascade" }),
10
+ activationMode: productActivationModeEnum("activation_mode").notNull().default("manual"),
11
+ activateAt: timestamp("activate_at", { withTimezone: true }),
12
+ deactivateAt: timestamp("deactivate_at", { withTimezone: true }),
13
+ sellAt: timestamp("sell_at", { withTimezone: true }),
14
+ stopSellAt: timestamp("stop_sell_at", { withTimezone: true }),
15
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
16
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
17
+ }, (table) => [
18
+ uniqueIndex("uidx_product_activation_settings_product").on(table.productId),
19
+ index("idx_product_activation_settings_mode").on(table.activationMode),
20
+ ]);
21
+ export const productTicketSettings = pgTable("product_ticket_settings", {
22
+ id: typeId("product_ticket_settings"),
23
+ productId: typeIdRef("product_id")
24
+ .notNull()
25
+ .references(() => products.id, { onDelete: "cascade" }),
26
+ fulfillmentMode: productTicketFulfillmentEnum("fulfillment_mode").notNull().default("none"),
27
+ defaultDeliveryFormat: productDeliveryFormatEnum("default_delivery_format")
28
+ .notNull()
29
+ .default("none"),
30
+ ticketPerUnit: boolean("ticket_per_unit").notNull().default(false),
31
+ barcodeFormat: text("barcode_format"),
32
+ voucherMessage: text("voucher_message"),
33
+ ticketMessage: text("ticket_message"),
34
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
35
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
36
+ }, (table) => [uniqueIndex("uidx_product_ticket_settings_product").on(table.productId)]);
37
+ export const productVisibilitySettings = pgTable("product_visibility_settings", {
38
+ id: typeId("product_visibility_settings"),
39
+ productId: typeIdRef("product_id")
40
+ .notNull()
41
+ .references(() => products.id, { onDelete: "cascade" }),
42
+ isSearchable: boolean("is_searchable").notNull().default(false),
43
+ isBookable: boolean("is_bookable").notNull().default(false),
44
+ isFeatured: boolean("is_featured").notNull().default(false),
45
+ requiresAuthentication: boolean("requires_authentication").notNull().default(false),
46
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
47
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
48
+ }, (table) => [uniqueIndex("uidx_product_visibility_settings_product").on(table.productId)]);
49
+ export const productCapabilities = pgTable("product_capabilities", {
50
+ id: typeId("product_capabilities"),
51
+ productId: typeIdRef("product_id")
52
+ .notNull()
53
+ .references(() => products.id, { onDelete: "cascade" }),
54
+ capability: productCapabilityEnum("capability").notNull(),
55
+ enabled: boolean("enabled").notNull().default(true),
56
+ notes: text("notes"),
57
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
58
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
59
+ }, (table) => [
60
+ index("idx_product_capabilities_product").on(table.productId),
61
+ index("idx_product_capabilities_capability").on(table.capability),
62
+ uniqueIndex("uidx_product_capabilities_product_capability").on(table.productId, table.capability),
63
+ ]);
64
+ export const productDeliveryFormats = pgTable("product_delivery_formats", {
65
+ id: typeId("product_delivery_formats"),
66
+ productId: typeIdRef("product_id")
67
+ .notNull()
68
+ .references(() => products.id, { onDelete: "cascade" }),
69
+ format: productDeliveryFormatEnum("format").notNull(),
70
+ isDefault: boolean("is_default").notNull().default(false),
71
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
72
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
73
+ }, (table) => [
74
+ index("idx_product_delivery_formats_product").on(table.productId),
75
+ uniqueIndex("uidx_product_delivery_formats_product_format").on(table.productId, table.format),
76
+ ]);
77
+ export const productFeatures = pgTable("product_features", {
78
+ id: typeId("product_features"),
79
+ productId: typeIdRef("product_id")
80
+ .notNull()
81
+ .references(() => products.id, { onDelete: "cascade" }),
82
+ featureType: productFeatureTypeEnum("feature_type").notNull().default("highlight"),
83
+ title: text("title").notNull(),
84
+ description: text("description"),
85
+ sortOrder: integer("sort_order").notNull().default(0),
86
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
87
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
88
+ }, (table) => [
89
+ index("idx_product_features_product").on(table.productId),
90
+ index("idx_product_features_type").on(table.featureType),
91
+ ]);
92
+ export const productFaqs = pgTable("product_faqs", {
93
+ id: typeId("product_faqs"),
94
+ productId: typeIdRef("product_id")
95
+ .notNull()
96
+ .references(() => products.id, { onDelete: "cascade" }),
97
+ question: text("question").notNull(),
98
+ answer: text("answer").notNull(),
99
+ sortOrder: integer("sort_order").notNull().default(0),
100
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
101
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
102
+ }, (table) => [index("idx_product_faqs_product").on(table.productId)]);
103
+ export const productLocations = pgTable("product_locations", {
104
+ id: typeId("product_locations"),
105
+ productId: typeIdRef("product_id")
106
+ .notNull()
107
+ .references(() => products.id, { onDelete: "cascade" }),
108
+ locationType: productLocationTypeEnum("location_type").notNull().default("point_of_interest"),
109
+ title: text("title").notNull(),
110
+ address: text("address"),
111
+ city: text("city"),
112
+ countryCode: text("country_code"),
113
+ latitude: doublePrecision("latitude"),
114
+ longitude: doublePrecision("longitude"),
115
+ googlePlaceId: text("google_place_id"),
116
+ applePlaceId: text("apple_place_id"),
117
+ tripadvisorLocationId: text("tripadvisor_location_id"),
118
+ sortOrder: integer("sort_order").notNull().default(0),
119
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
120
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
121
+ }, (table) => [
122
+ index("idx_product_locations_product").on(table.productId),
123
+ index("idx_product_locations_type").on(table.locationType),
124
+ ]);
125
+ export const productTranslations = pgTable("product_translations", {
126
+ id: typeId("product_translations"),
127
+ productId: typeIdRef("product_id")
128
+ .notNull()
129
+ .references(() => products.id, { onDelete: "cascade" }),
130
+ languageTag: text("language_tag").notNull(),
131
+ slug: text("slug"),
132
+ name: text("name").notNull(),
133
+ shortDescription: text("short_description"),
134
+ description: text("description"),
135
+ seoTitle: text("seo_title"),
136
+ seoDescription: text("seo_description"),
137
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
138
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
139
+ }, (table) => [
140
+ index("idx_product_translations_product").on(table.productId),
141
+ index("idx_product_translations_language").on(table.languageTag),
142
+ uniqueIndex("uidx_product_translations_product_language").on(table.productId, table.languageTag),
143
+ ]);
144
+ export const productOptionTranslations = pgTable("product_option_translations", {
145
+ id: typeId("product_option_translations"),
146
+ optionId: typeIdRef("option_id")
147
+ .notNull()
148
+ .references(() => productOptions.id, { onDelete: "cascade" }),
149
+ languageTag: text("language_tag").notNull(),
150
+ name: text("name").notNull(),
151
+ shortDescription: text("short_description"),
152
+ description: text("description"),
153
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
154
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
155
+ }, (table) => [
156
+ index("idx_product_option_translations_option").on(table.optionId),
157
+ index("idx_product_option_translations_language").on(table.languageTag),
158
+ uniqueIndex("uidx_product_option_translations_option_language").on(table.optionId, table.languageTag),
159
+ ]);
160
+ export const optionUnitTranslations = pgTable("option_unit_translations", {
161
+ id: typeId("option_unit_translations"),
162
+ unitId: typeIdRef("unit_id")
163
+ .notNull()
164
+ .references(() => optionUnits.id, { onDelete: "cascade" }),
165
+ languageTag: text("language_tag").notNull(),
166
+ name: text("name").notNull(),
167
+ shortDescription: text("short_description"),
168
+ description: text("description"),
169
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
170
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
171
+ }, (table) => [
172
+ index("idx_option_unit_translations_unit").on(table.unitId),
173
+ index("idx_option_unit_translations_language").on(table.languageTag),
174
+ uniqueIndex("uidx_option_unit_translations_unit_language").on(table.unitId, table.languageTag),
175
+ ]);
@@ -0,0 +1,15 @@
1
+ export declare const productStatusEnum: import("drizzle-orm/pg-core").PgEnum<["draft", "active", "archived"]>;
2
+ export declare const productOptionStatusEnum: import("drizzle-orm/pg-core").PgEnum<["draft", "active", "archived"]>;
3
+ export declare const optionUnitTypeEnum: import("drizzle-orm/pg-core").PgEnum<["person", "group", "room", "vehicle", "service", "other"]>;
4
+ export declare const productBookingModeEnum: import("drizzle-orm/pg-core").PgEnum<["date", "date_time", "open", "stay", "transfer", "itinerary", "other"]>;
5
+ export declare const productCapacityModeEnum: import("drizzle-orm/pg-core").PgEnum<["free_sale", "limited", "on_request"]>;
6
+ export declare const productVisibilityEnum: import("drizzle-orm/pg-core").PgEnum<["public", "private", "hidden"]>;
7
+ export declare const productActivationModeEnum: import("drizzle-orm/pg-core").PgEnum<["manual", "scheduled", "channel_controlled"]>;
8
+ export declare const productTicketFulfillmentEnum: import("drizzle-orm/pg-core").PgEnum<["none", "per_booking", "per_participant", "per_item"]>;
9
+ export declare const productDeliveryFormatEnum: import("drizzle-orm/pg-core").PgEnum<["voucher", "ticket", "pdf", "qr_code", "barcode", "email", "mobile", "none"]>;
10
+ export declare const productCapabilityEnum: import("drizzle-orm/pg-core").PgEnum<["instant_confirmation", "on_request", "pickup_available", "dropoff_available", "guided", "private", "shared", "digital_ticket", "voucher_required", "external_inventory", "multi_day", "accommodation", "transport"]>;
11
+ export declare const productFeatureTypeEnum: import("drizzle-orm/pg-core").PgEnum<["inclusion", "exclusion", "highlight", "important_information", "other"]>;
12
+ export declare const productLocationTypeEnum: import("drizzle-orm/pg-core").PgEnum<["start", "end", "meeting_point", "pickup", "dropoff", "point_of_interest", "other"]>;
13
+ export declare const serviceTypeEnum: import("drizzle-orm/pg-core").PgEnum<["accommodation", "transfer", "experience", "guide", "meal", "other"]>;
14
+ export declare const productMediaTypeEnum: import("drizzle-orm/pg-core").PgEnum<["image", "video", "document"]>;
15
+ //# sourceMappingURL=schema-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-shared.d.ts","sourceRoot":"","sources":["../src/schema-shared.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,uEAA4D,CAAA;AAC1F,eAAO,MAAM,uBAAuB,uEAIlC,CAAA;AACF,eAAO,MAAM,kBAAkB,kGAO7B,CAAA;AACF,eAAO,MAAM,sBAAsB,+GAQjC,CAAA;AACF,eAAO,MAAM,uBAAuB,8EAIlC,CAAA;AACF,eAAO,MAAM,qBAAqB,uEAAgE,CAAA;AAClG,eAAO,MAAM,yBAAyB,qFAIpC,CAAA;AACF,eAAO,MAAM,4BAA4B,8FAKvC,CAAA;AACF,eAAO,MAAM,yBAAyB,qHASpC,CAAA;AACF,eAAO,MAAM,qBAAqB,6PAchC,CAAA;AACF,eAAO,MAAM,sBAAsB,iHAMjC,CAAA;AACF,eAAO,MAAM,uBAAuB,4HAQlC,CAAA;AACF,eAAO,MAAM,eAAe,6GAO1B,CAAA;AACF,eAAO,MAAM,oBAAoB,sEAA+D,CAAA"}
@@ -0,0 +1,91 @@
1
+ import { pgEnum } from "drizzle-orm/pg-core";
2
+ export const productStatusEnum = pgEnum("product_status", ["draft", "active", "archived"]);
3
+ export const productOptionStatusEnum = pgEnum("product_option_status", [
4
+ "draft",
5
+ "active",
6
+ "archived",
7
+ ]);
8
+ export const optionUnitTypeEnum = pgEnum("option_unit_type", [
9
+ "person",
10
+ "group",
11
+ "room",
12
+ "vehicle",
13
+ "service",
14
+ "other",
15
+ ]);
16
+ export const productBookingModeEnum = pgEnum("product_booking_mode", [
17
+ "date",
18
+ "date_time",
19
+ "open",
20
+ "stay",
21
+ "transfer",
22
+ "itinerary",
23
+ "other",
24
+ ]);
25
+ export const productCapacityModeEnum = pgEnum("product_capacity_mode", [
26
+ "free_sale",
27
+ "limited",
28
+ "on_request",
29
+ ]);
30
+ export const productVisibilityEnum = pgEnum("product_visibility", ["public", "private", "hidden"]);
31
+ export const productActivationModeEnum = pgEnum("product_activation_mode", [
32
+ "manual",
33
+ "scheduled",
34
+ "channel_controlled",
35
+ ]);
36
+ export const productTicketFulfillmentEnum = pgEnum("product_ticket_fulfillment", [
37
+ "none",
38
+ "per_booking",
39
+ "per_participant",
40
+ "per_item",
41
+ ]);
42
+ export const productDeliveryFormatEnum = pgEnum("product_delivery_format", [
43
+ "voucher",
44
+ "ticket",
45
+ "pdf",
46
+ "qr_code",
47
+ "barcode",
48
+ "email",
49
+ "mobile",
50
+ "none",
51
+ ]);
52
+ export const productCapabilityEnum = pgEnum("product_capability", [
53
+ "instant_confirmation",
54
+ "on_request",
55
+ "pickup_available",
56
+ "dropoff_available",
57
+ "guided",
58
+ "private",
59
+ "shared",
60
+ "digital_ticket",
61
+ "voucher_required",
62
+ "external_inventory",
63
+ "multi_day",
64
+ "accommodation",
65
+ "transport",
66
+ ]);
67
+ export const productFeatureTypeEnum = pgEnum("product_feature_type", [
68
+ "inclusion",
69
+ "exclusion",
70
+ "highlight",
71
+ "important_information",
72
+ "other",
73
+ ]);
74
+ export const productLocationTypeEnum = pgEnum("product_location_type", [
75
+ "start",
76
+ "end",
77
+ "meeting_point",
78
+ "pickup",
79
+ "dropoff",
80
+ "point_of_interest",
81
+ "other",
82
+ ]);
83
+ export const serviceTypeEnum = pgEnum("service_type", [
84
+ "accommodation",
85
+ "transfer",
86
+ "experience",
87
+ "guide",
88
+ "meal",
89
+ "other",
90
+ ]);
91
+ export const productMediaTypeEnum = pgEnum("product_media_type", ["image", "video", "document"]);