@servemate/dto 1.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":"items.dto.d.ts","sourceRoot":"","sources":["../../src/dto/items.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drinkItemsListSchema = exports.foodItemsListSchema = exports.searchDrinkItemsSchema = exports.searchFoodItemsSchema = exports.updateFoodItemSchema = exports.updateDrinkItemSchema = exports.createFoodItemSchema = exports.createDrinkItemSchema = exports.foodItemSchema = exports.drinkItemSchema = exports.baseItemSchema = exports.DrinkItemSortOptions = exports.FoodItemSortOptions = exports.ItemSortOptions = void 0;
4
+ const zod_1 = require("zod");
5
+ const enums_1 = require("./enums");
6
+ const global_1 = require("./global");
7
+ exports.ItemSortOptions = {
8
+ ID: 'id',
9
+ NAME: 'name',
10
+ PRICE: 'price',
11
+ POPULARITY: 'popularityScore',
12
+ INGREDIENTS: 'ingredients',
13
+ IS_AVAILABLE: 'isAvailable',
14
+ POPULARITY_SCORE: 'popularityScore',
15
+ CREATED_AT: 'createdAt',
16
+ UPDATED_AT: 'updatedAt',
17
+ };
18
+ exports.FoodItemSortOptions = {
19
+ ...exports.ItemSortOptions,
20
+ TYPE: 'type',
21
+ CATEGORY: 'category',
22
+ ALLERGIES: 'allergies',
23
+ PREPARATION_TIME: 'preparationTime',
24
+ SPICY_LEVEL: 'spicyLevel',
25
+ CALORIES: 'calories',
26
+ IS_VEGAN: 'isVegan',
27
+ IS_GLUTEN_FREE: 'isGlutenFree',
28
+ };
29
+ exports.DrinkItemSortOptions = {
30
+ ...exports.ItemSortOptions,
31
+ CATEGORY: 'category',
32
+ VOLUME: 'volume',
33
+ ALCOHOL_PERCENTAGE: 'alcoholPercentage',
34
+ IS_CARBONATED: 'isCarbonated',
35
+ TEMPRITURE: 'tempriture',
36
+ };
37
+ //type: FoodType,
38
+ exports.baseItemSchema = zod_1.z.object({
39
+ id: zod_1.z.coerce.number().int().positive(),
40
+ name: zod_1.z.string().min(3),
41
+ price: zod_1.z.number().nonnegative(),
42
+ description: zod_1.z.string().min(3),
43
+ ingredients: zod_1.z.preprocess((val) => {
44
+ if (typeof val === 'string') {
45
+ return val
46
+ .split(',')
47
+ .map((item) => item.trim())
48
+ .map((item) => item.charAt(0).toUpperCase() + item.slice(1).toLocaleLowerCase());
49
+ }
50
+ return val;
51
+ }, zod_1.z.array(zod_1.z.string()).default([])),
52
+ isAvailable: zod_1.z.boolean().default(true),
53
+ popularityScore: zod_1.z.number().nonnegative().default(0),
54
+ image: zod_1.z.string().nullable().default(null),
55
+ });
56
+ exports.drinkItemSchema = exports.baseItemSchema.extend({
57
+ category: zod_1.z.preprocess((val) => (typeof val === 'string' ? val.toUpperCase() : val), zod_1.z.nativeEnum(enums_1.DrinkCategory)),
58
+ volume: zod_1.z.number().nonnegative(),
59
+ alcoholPercentage: zod_1.z.number().nonnegative().nullable(),
60
+ isCarbonated: zod_1.z.preprocess((val) => {
61
+ if (typeof val === 'string') {
62
+ return val.toLowerCase() === 'true';
63
+ }
64
+ return val;
65
+ }, zod_1.z.boolean()),
66
+ tempriture: zod_1.z.preprocess((val) => (typeof val === 'string' ? val.toUpperCase() : val), zod_1.z.nativeEnum(enums_1.DrinkTemp)),
67
+ });
68
+ exports.foodItemSchema = exports.baseItemSchema.extend({
69
+ category: zod_1.z.preprocess((val) => (typeof val === 'string' ? val.toUpperCase() : val), zod_1.z.nativeEnum(enums_1.FoodCategory)),
70
+ type: zod_1.z.nativeEnum(enums_1.FoodType),
71
+ isVegan: zod_1.z.boolean().default(false),
72
+ isGlutenFree: zod_1.z.boolean().default(false),
73
+ isVegetarian: zod_1.z.boolean().default(false),
74
+ allergies: zod_1.z.preprocess((val) => {
75
+ if (typeof val === 'string') {
76
+ return val.split(',').map((item) => item.trim().toUpperCase());
77
+ }
78
+ return val;
79
+ }, zod_1.z.array(zod_1.z.nativeEnum(enums_1.Allergy)).default([])),
80
+ preparationTime: zod_1.z.number().nonnegative().default(0),
81
+ spicyLevel: zod_1.z.nativeEnum(enums_1.SpiceLevel).default(enums_1.SpiceLevel.NOT_SPICY),
82
+ calories: zod_1.z.number().nullable().default(0),
83
+ });
84
+ exports.createDrinkItemSchema = exports.drinkItemSchema.omit({
85
+ id: true,
86
+ });
87
+ exports.createFoodItemSchema = exports.foodItemSchema.omit({
88
+ id: true,
89
+ });
90
+ exports.updateDrinkItemSchema = exports.drinkItemSchema
91
+ .omit({
92
+ id: true,
93
+ })
94
+ .partial();
95
+ exports.updateFoodItemSchema = exports.foodItemSchema.omit({ id: true }).partial();
96
+ exports.searchFoodItemsSchema = exports.foodItemSchema.partial().extend({
97
+ ...global_1.searchCriteriaSchema.shape,
98
+ sortBy: zod_1.z.nativeEnum(exports.FoodItemSortOptions).optional().default(exports.FoodItemSortOptions.ID),
99
+ });
100
+ exports.searchDrinkItemsSchema = exports.drinkItemSchema.partial().extend({
101
+ ...global_1.searchCriteriaSchema.shape,
102
+ sortBy: zod_1.z.nativeEnum(exports.DrinkItemSortOptions).optional().default(exports.DrinkItemSortOptions.ID),
103
+ });
104
+ /**
105
+ * Schema for a list of food items.
106
+ *
107
+ * This schema extends the `listPropsSchema` to include an array of food items.
108
+ * Each food item in the array must conform to the `foodItemSchema`.
109
+ *
110
+ * @constant
111
+ * @type {ZodSchema}
112
+ *
113
+ * @example
114
+ * const validData = {
115
+ * items: [
116
+ * { name: "Apple", calories: 95 },
117
+ * { name: "Banana", calories: 105 }
118
+ * ]
119
+ * };
120
+ *
121
+ * foodItemsListSchema.parse(validData); // This will pass validation
122
+ *
123
+ * @see {@link listPropsSchema} for the base schema properties.
124
+ * @see {@link foodItemSchema} for the individual food item schema.
125
+ */
126
+ exports.foodItemsListSchema = global_1.listPropsSchema.extend({
127
+ items: zod_1.z.array(exports.foodItemSchema),
128
+ });
129
+ /**
130
+ * Schema for a list of drink items.
131
+ *
132
+ * This schema extends the `listPropsSchema` to include an array of drink items.
133
+ * Each drink item in the array must conform to the `drinkItemSchema`.
134
+ *
135
+ * @constant
136
+ * @type {ZodSchema}
137
+ *
138
+ * @example
139
+ * const validData = {
140
+ * items: [
141
+ * { name: "Coca Cola", volume: 330 },
142
+ * { name: "Fanta", volume: 330 }
143
+ * ]
144
+ * };
145
+ *
146
+ * drinkItemsListSchema.parse(validData); // This will pass validation
147
+ *
148
+ * @see {@link listPropsSchema} for the base schema properties.
149
+ * @see {@link drinkItemSchema} for the individual drink item schema.
150
+ */
151
+ exports.drinkItemsListSchema = global_1.listPropsSchema.extend({
152
+ items: zod_1.z.array(exports.drinkItemSchema),
153
+ });
154
+ //# sourceMappingURL=items.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.dto.js","sourceRoot":"","sources":["../../src/dto/items.dto.ts"],"names":[],"mappings":"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"}