@voyantjs/hospitality 0.1.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":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAsEjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAgvB1B,CAAA;AAEJ,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA"}
package/dist/routes.js ADDED
@@ -0,0 +1,553 @@
1
+ import { Hono } from "hono";
2
+ import { hospitalityService } from "./service.js";
3
+ import { housekeepingTaskListQuerySchema, insertHousekeepingTaskSchema, insertMaintenanceBlockSchema, insertMealPlanSchema, insertRatePlanInventoryOverrideSchema, insertRatePlanRoomTypeSchema, insertRatePlanSchema, insertRoomBlockSchema, insertRoomInventorySchema, insertRoomTypeBedConfigSchema, insertRoomTypeRateSchema, insertRoomTypeSchema, insertRoomUnitSchema, insertRoomUnitStatusEventSchema, insertStayBookingItemSchema, insertStayCheckpointSchema, insertStayDailyRateSchema, insertStayFolioLineSchema, insertStayFolioSchema, insertStayOperationSchema, insertStayRuleSchema, insertStayServicePostSchema, maintenanceBlockListQuerySchema, mealPlanListQuerySchema, ratePlanInventoryOverrideListQuerySchema, ratePlanListQuerySchema, ratePlanRoomTypeListQuerySchema, roomBlockListQuerySchema, roomInventoryListQuerySchema, roomTypeBedConfigListQuerySchema, roomTypeListQuerySchema, roomTypeRateListQuerySchema, roomUnitListQuerySchema, roomUnitStatusEventListQuerySchema, stayBookingItemListQuerySchema, stayCheckpointListQuerySchema, stayDailyRateListQuerySchema, stayFolioLineListQuerySchema, stayFolioListQuerySchema, stayOperationListQuerySchema, stayRuleListQuerySchema, stayServicePostListQuerySchema, updateHousekeepingTaskSchema, updateMaintenanceBlockSchema, updateMealPlanSchema, updateRatePlanInventoryOverrideSchema, updateRatePlanRoomTypeSchema, updateRatePlanSchema, updateRoomBlockSchema, updateRoomInventorySchema, updateRoomTypeBedConfigSchema, updateRoomTypeRateSchema, updateRoomTypeSchema, updateRoomUnitSchema, updateRoomUnitStatusEventSchema, updateStayBookingItemSchema, updateStayCheckpointSchema, updateStayDailyRateSchema, updateStayFolioLineSchema, updateStayFolioSchema, updateStayOperationSchema, updateStayRuleSchema, updateStayServicePostSchema, } from "./validation.js";
4
+ export const hospitalityRoutes = new Hono()
5
+ .get("/room-types", async (c) => {
6
+ const query = roomTypeListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
7
+ return c.json(await hospitalityService.listRoomTypes(c.get("db"), query));
8
+ })
9
+ .post("/room-types", async (c) => {
10
+ return c.json({
11
+ data: await hospitalityService.createRoomType(c.get("db"), insertRoomTypeSchema.parse(await c.req.json())),
12
+ }, 201);
13
+ })
14
+ .get("/room-types/:id", async (c) => {
15
+ const row = await hospitalityService.getRoomTypeById(c.get("db"), c.req.param("id"));
16
+ if (!row)
17
+ return c.json({ error: "Room type not found" }, 404);
18
+ return c.json({ data: row });
19
+ })
20
+ .patch("/room-types/:id", async (c) => {
21
+ const row = await hospitalityService.updateRoomType(c.get("db"), c.req.param("id"), updateRoomTypeSchema.parse(await c.req.json()));
22
+ if (!row)
23
+ return c.json({ error: "Room type not found" }, 404);
24
+ return c.json({ data: row });
25
+ })
26
+ .delete("/room-types/:id", async (c) => {
27
+ const row = await hospitalityService.deleteRoomType(c.get("db"), c.req.param("id"));
28
+ if (!row)
29
+ return c.json({ error: "Room type not found" }, 404);
30
+ return c.json({ success: true });
31
+ })
32
+ .get("/room-type-bed-configs", async (c) => {
33
+ const query = roomTypeBedConfigListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
34
+ return c.json(await hospitalityService.listRoomTypeBedConfigs(c.get("db"), query));
35
+ })
36
+ .post("/room-type-bed-configs", async (c) => {
37
+ return c.json({
38
+ data: await hospitalityService.createRoomTypeBedConfig(c.get("db"), insertRoomTypeBedConfigSchema.parse(await c.req.json())),
39
+ }, 201);
40
+ })
41
+ .get("/room-type-bed-configs/:id", async (c) => {
42
+ const row = await hospitalityService.getRoomTypeBedConfigById(c.get("db"), c.req.param("id"));
43
+ if (!row)
44
+ return c.json({ error: "Room type bed config not found" }, 404);
45
+ return c.json({ data: row });
46
+ })
47
+ .patch("/room-type-bed-configs/:id", async (c) => {
48
+ const row = await hospitalityService.updateRoomTypeBedConfig(c.get("db"), c.req.param("id"), updateRoomTypeBedConfigSchema.parse(await c.req.json()));
49
+ if (!row)
50
+ return c.json({ error: "Room type bed config not found" }, 404);
51
+ return c.json({ data: row });
52
+ })
53
+ .delete("/room-type-bed-configs/:id", async (c) => {
54
+ const row = await hospitalityService.deleteRoomTypeBedConfig(c.get("db"), c.req.param("id"));
55
+ if (!row)
56
+ return c.json({ error: "Room type bed config not found" }, 404);
57
+ return c.json({ success: true });
58
+ })
59
+ .get("/room-units", async (c) => {
60
+ const query = roomUnitListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
61
+ return c.json(await hospitalityService.listRoomUnits(c.get("db"), query));
62
+ })
63
+ .post("/room-units", async (c) => {
64
+ return c.json({
65
+ data: await hospitalityService.createRoomUnit(c.get("db"), insertRoomUnitSchema.parse(await c.req.json())),
66
+ }, 201);
67
+ })
68
+ .get("/room-units/:id", async (c) => {
69
+ const row = await hospitalityService.getRoomUnitById(c.get("db"), c.req.param("id"));
70
+ if (!row)
71
+ return c.json({ error: "Room unit not found" }, 404);
72
+ return c.json({ data: row });
73
+ })
74
+ .patch("/room-units/:id", async (c) => {
75
+ const row = await hospitalityService.updateRoomUnit(c.get("db"), c.req.param("id"), updateRoomUnitSchema.parse(await c.req.json()));
76
+ if (!row)
77
+ return c.json({ error: "Room unit not found" }, 404);
78
+ return c.json({ data: row });
79
+ })
80
+ .delete("/room-units/:id", async (c) => {
81
+ const row = await hospitalityService.deleteRoomUnit(c.get("db"), c.req.param("id"));
82
+ if (!row)
83
+ return c.json({ error: "Room unit not found" }, 404);
84
+ return c.json({ success: true });
85
+ })
86
+ .get("/meal-plans", async (c) => {
87
+ const query = mealPlanListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
88
+ return c.json(await hospitalityService.listMealPlans(c.get("db"), query));
89
+ })
90
+ .post("/meal-plans", async (c) => {
91
+ return c.json({
92
+ data: await hospitalityService.createMealPlan(c.get("db"), insertMealPlanSchema.parse(await c.req.json())),
93
+ }, 201);
94
+ })
95
+ .get("/meal-plans/:id", async (c) => {
96
+ const row = await hospitalityService.getMealPlanById(c.get("db"), c.req.param("id"));
97
+ if (!row)
98
+ return c.json({ error: "Meal plan not found" }, 404);
99
+ return c.json({ data: row });
100
+ })
101
+ .patch("/meal-plans/:id", async (c) => {
102
+ const row = await hospitalityService.updateMealPlan(c.get("db"), c.req.param("id"), updateMealPlanSchema.parse(await c.req.json()));
103
+ if (!row)
104
+ return c.json({ error: "Meal plan not found" }, 404);
105
+ return c.json({ data: row });
106
+ })
107
+ .delete("/meal-plans/:id", async (c) => {
108
+ const row = await hospitalityService.deleteMealPlan(c.get("db"), c.req.param("id"));
109
+ if (!row)
110
+ return c.json({ error: "Meal plan not found" }, 404);
111
+ return c.json({ success: true });
112
+ })
113
+ .get("/rate-plans", async (c) => {
114
+ const query = ratePlanListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
115
+ return c.json(await hospitalityService.listRatePlans(c.get("db"), query));
116
+ })
117
+ .post("/rate-plans", async (c) => {
118
+ return c.json({
119
+ data: await hospitalityService.createRatePlan(c.get("db"), insertRatePlanSchema.parse(await c.req.json())),
120
+ }, 201);
121
+ })
122
+ .get("/rate-plans/:id", async (c) => {
123
+ const row = await hospitalityService.getRatePlanById(c.get("db"), c.req.param("id"));
124
+ if (!row)
125
+ return c.json({ error: "Rate plan not found" }, 404);
126
+ return c.json({ data: row });
127
+ })
128
+ .patch("/rate-plans/:id", async (c) => {
129
+ const row = await hospitalityService.updateRatePlan(c.get("db"), c.req.param("id"), updateRatePlanSchema.parse(await c.req.json()));
130
+ if (!row)
131
+ return c.json({ error: "Rate plan not found" }, 404);
132
+ return c.json({ data: row });
133
+ })
134
+ .delete("/rate-plans/:id", async (c) => {
135
+ const row = await hospitalityService.deleteRatePlan(c.get("db"), c.req.param("id"));
136
+ if (!row)
137
+ return c.json({ error: "Rate plan not found" }, 404);
138
+ return c.json({ success: true });
139
+ })
140
+ .get("/rate-plan-room-types", async (c) => {
141
+ const query = ratePlanRoomTypeListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
142
+ return c.json(await hospitalityService.listRatePlanRoomTypes(c.get("db"), query));
143
+ })
144
+ .post("/rate-plan-room-types", async (c) => {
145
+ return c.json({
146
+ data: await hospitalityService.createRatePlanRoomType(c.get("db"), insertRatePlanRoomTypeSchema.parse(await c.req.json())),
147
+ }, 201);
148
+ })
149
+ .get("/rate-plan-room-types/:id", async (c) => {
150
+ const row = await hospitalityService.getRatePlanRoomTypeById(c.get("db"), c.req.param("id"));
151
+ if (!row)
152
+ return c.json({ error: "Rate plan room type not found" }, 404);
153
+ return c.json({ data: row });
154
+ })
155
+ .patch("/rate-plan-room-types/:id", async (c) => {
156
+ const row = await hospitalityService.updateRatePlanRoomType(c.get("db"), c.req.param("id"), updateRatePlanRoomTypeSchema.parse(await c.req.json()));
157
+ if (!row)
158
+ return c.json({ error: "Rate plan room type not found" }, 404);
159
+ return c.json({ data: row });
160
+ })
161
+ .delete("/rate-plan-room-types/:id", async (c) => {
162
+ const row = await hospitalityService.deleteRatePlanRoomType(c.get("db"), c.req.param("id"));
163
+ if (!row)
164
+ return c.json({ error: "Rate plan room type not found" }, 404);
165
+ return c.json({ success: true });
166
+ })
167
+ .get("/room-type-rates", async (c) => {
168
+ const query = roomTypeRateListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
169
+ return c.json(await hospitalityService.listRoomTypeRates(c.get("db"), query));
170
+ })
171
+ .post("/room-type-rates", async (c) => {
172
+ return c.json({
173
+ data: await hospitalityService.createRoomTypeRate(c.get("db"), insertRoomTypeRateSchema.parse(await c.req.json())),
174
+ }, 201);
175
+ })
176
+ .get("/room-type-rates/:id", async (c) => {
177
+ const row = await hospitalityService.getRoomTypeRateById(c.get("db"), c.req.param("id"));
178
+ if (!row)
179
+ return c.json({ error: "Room type rate not found" }, 404);
180
+ return c.json({ data: row });
181
+ })
182
+ .patch("/room-type-rates/:id", async (c) => {
183
+ const row = await hospitalityService.updateRoomTypeRate(c.get("db"), c.req.param("id"), updateRoomTypeRateSchema.parse(await c.req.json()));
184
+ if (!row)
185
+ return c.json({ error: "Room type rate not found" }, 404);
186
+ return c.json({ data: row });
187
+ })
188
+ .delete("/room-type-rates/:id", async (c) => {
189
+ const row = await hospitalityService.deleteRoomTypeRate(c.get("db"), c.req.param("id"));
190
+ if (!row)
191
+ return c.json({ error: "Room type rate not found" }, 404);
192
+ return c.json({ success: true });
193
+ })
194
+ .get("/stay-rules", async (c) => {
195
+ const query = stayRuleListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
196
+ return c.json(await hospitalityService.listStayRules(c.get("db"), query));
197
+ })
198
+ .post("/stay-rules", async (c) => {
199
+ return c.json({
200
+ data: await hospitalityService.createStayRule(c.get("db"), insertStayRuleSchema.parse(await c.req.json())),
201
+ }, 201);
202
+ })
203
+ .get("/stay-rules/:id", async (c) => {
204
+ const row = await hospitalityService.getStayRuleById(c.get("db"), c.req.param("id"));
205
+ if (!row)
206
+ return c.json({ error: "Stay rule not found" }, 404);
207
+ return c.json({ data: row });
208
+ })
209
+ .patch("/stay-rules/:id", async (c) => {
210
+ const row = await hospitalityService.updateStayRule(c.get("db"), c.req.param("id"), updateStayRuleSchema.parse(await c.req.json()));
211
+ if (!row)
212
+ return c.json({ error: "Stay rule not found" }, 404);
213
+ return c.json({ data: row });
214
+ })
215
+ .delete("/stay-rules/:id", async (c) => {
216
+ const row = await hospitalityService.deleteStayRule(c.get("db"), c.req.param("id"));
217
+ if (!row)
218
+ return c.json({ error: "Stay rule not found" }, 404);
219
+ return c.json({ success: true });
220
+ })
221
+ .get("/room-inventory", async (c) => {
222
+ const query = roomInventoryListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
223
+ return c.json(await hospitalityService.listRoomInventory(c.get("db"), query));
224
+ })
225
+ .post("/room-inventory", async (c) => {
226
+ return c.json({
227
+ data: await hospitalityService.createRoomInventory(c.get("db"), insertRoomInventorySchema.parse(await c.req.json())),
228
+ }, 201);
229
+ })
230
+ .get("/room-inventory/:id", async (c) => {
231
+ const row = await hospitalityService.getRoomInventoryById(c.get("db"), c.req.param("id"));
232
+ if (!row)
233
+ return c.json({ error: "Room inventory not found" }, 404);
234
+ return c.json({ data: row });
235
+ })
236
+ .patch("/room-inventory/:id", async (c) => {
237
+ const row = await hospitalityService.updateRoomInventory(c.get("db"), c.req.param("id"), updateRoomInventorySchema.parse(await c.req.json()));
238
+ if (!row)
239
+ return c.json({ error: "Room inventory not found" }, 404);
240
+ return c.json({ data: row });
241
+ })
242
+ .delete("/room-inventory/:id", async (c) => {
243
+ const row = await hospitalityService.deleteRoomInventory(c.get("db"), c.req.param("id"));
244
+ if (!row)
245
+ return c.json({ error: "Room inventory not found" }, 404);
246
+ return c.json({ success: true });
247
+ })
248
+ .get("/rate-plan-inventory-overrides", async (c) => {
249
+ const query = ratePlanInventoryOverrideListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
250
+ return c.json(await hospitalityService.listRatePlanInventoryOverrides(c.get("db"), query));
251
+ })
252
+ .post("/rate-plan-inventory-overrides", async (c) => {
253
+ return c.json({
254
+ data: await hospitalityService.createRatePlanInventoryOverride(c.get("db"), insertRatePlanInventoryOverrideSchema.parse(await c.req.json())),
255
+ }, 201);
256
+ })
257
+ .get("/rate-plan-inventory-overrides/:id", async (c) => {
258
+ const row = await hospitalityService.getRatePlanInventoryOverrideById(c.get("db"), c.req.param("id"));
259
+ if (!row)
260
+ return c.json({ error: "Rate plan inventory override not found" }, 404);
261
+ return c.json({ data: row });
262
+ })
263
+ .patch("/rate-plan-inventory-overrides/:id", async (c) => {
264
+ const row = await hospitalityService.updateRatePlanInventoryOverride(c.get("db"), c.req.param("id"), updateRatePlanInventoryOverrideSchema.parse(await c.req.json()));
265
+ if (!row)
266
+ return c.json({ error: "Rate plan inventory override not found" }, 404);
267
+ return c.json({ data: row });
268
+ })
269
+ .delete("/rate-plan-inventory-overrides/:id", async (c) => {
270
+ const row = await hospitalityService.deleteRatePlanInventoryOverride(c.get("db"), c.req.param("id"));
271
+ if (!row)
272
+ return c.json({ error: "Rate plan inventory override not found" }, 404);
273
+ return c.json({ success: true });
274
+ })
275
+ .get("/stay-booking-items", async (c) => {
276
+ const query = stayBookingItemListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
277
+ return c.json(await hospitalityService.listStayBookingItems(c.get("db"), query));
278
+ })
279
+ .post("/stay-booking-items", async (c) => {
280
+ return c.json({
281
+ data: await hospitalityService.createStayBookingItem(c.get("db"), insertStayBookingItemSchema.parse(await c.req.json())),
282
+ }, 201);
283
+ })
284
+ .get("/stay-booking-items/:id", async (c) => {
285
+ const row = await hospitalityService.getStayBookingItemById(c.get("db"), c.req.param("id"));
286
+ if (!row)
287
+ return c.json({ error: "Stay booking item not found" }, 404);
288
+ return c.json({ data: row });
289
+ })
290
+ .patch("/stay-booking-items/:id", async (c) => {
291
+ const row = await hospitalityService.updateStayBookingItem(c.get("db"), c.req.param("id"), updateStayBookingItemSchema.parse(await c.req.json()));
292
+ if (!row)
293
+ return c.json({ error: "Stay booking item not found" }, 404);
294
+ return c.json({ data: row });
295
+ })
296
+ .delete("/stay-booking-items/:id", async (c) => {
297
+ const row = await hospitalityService.deleteStayBookingItem(c.get("db"), c.req.param("id"));
298
+ if (!row)
299
+ return c.json({ error: "Stay booking item not found" }, 404);
300
+ return c.json({ success: true });
301
+ })
302
+ .get("/stay-daily-rates", async (c) => {
303
+ const query = stayDailyRateListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
304
+ return c.json(await hospitalityService.listStayDailyRates(c.get("db"), query));
305
+ })
306
+ .post("/stay-daily-rates", async (c) => {
307
+ return c.json({
308
+ data: await hospitalityService.createStayDailyRate(c.get("db"), insertStayDailyRateSchema.parse(await c.req.json())),
309
+ }, 201);
310
+ })
311
+ .get("/stay-daily-rates/:id", async (c) => {
312
+ const row = await hospitalityService.getStayDailyRateById(c.get("db"), c.req.param("id"));
313
+ if (!row)
314
+ return c.json({ error: "Stay daily rate not found" }, 404);
315
+ return c.json({ data: row });
316
+ })
317
+ .patch("/stay-daily-rates/:id", async (c) => {
318
+ const row = await hospitalityService.updateStayDailyRate(c.get("db"), c.req.param("id"), updateStayDailyRateSchema.parse(await c.req.json()));
319
+ if (!row)
320
+ return c.json({ error: "Stay daily rate not found" }, 404);
321
+ return c.json({ data: row });
322
+ })
323
+ .delete("/stay-daily-rates/:id", async (c) => {
324
+ const row = await hospitalityService.deleteStayDailyRate(c.get("db"), c.req.param("id"));
325
+ if (!row)
326
+ return c.json({ error: "Stay daily rate not found" }, 404);
327
+ return c.json({ success: true });
328
+ })
329
+ .get("/room-blocks", async (c) => {
330
+ const query = roomBlockListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
331
+ return c.json(await hospitalityService.listRoomBlocks(c.get("db"), query));
332
+ })
333
+ .post("/room-blocks", async (c) => c.json({
334
+ data: await hospitalityService.createRoomBlock(c.get("db"), insertRoomBlockSchema.parse(await c.req.json())),
335
+ }, 201))
336
+ .get("/room-blocks/:id", async (c) => {
337
+ const row = await hospitalityService.getRoomBlockById(c.get("db"), c.req.param("id"));
338
+ if (!row)
339
+ return c.json({ error: "Room block not found" }, 404);
340
+ return c.json({ data: row });
341
+ })
342
+ .patch("/room-blocks/:id", async (c) => {
343
+ const row = await hospitalityService.updateRoomBlock(c.get("db"), c.req.param("id"), updateRoomBlockSchema.parse(await c.req.json()));
344
+ if (!row)
345
+ return c.json({ error: "Room block not found" }, 404);
346
+ return c.json({ data: row });
347
+ })
348
+ .delete("/room-blocks/:id", async (c) => {
349
+ const row = await hospitalityService.deleteRoomBlock(c.get("db"), c.req.param("id"));
350
+ if (!row)
351
+ return c.json({ error: "Room block not found" }, 404);
352
+ return c.json({ success: true });
353
+ })
354
+ .get("/room-unit-status-events", async (c) => {
355
+ const query = roomUnitStatusEventListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
356
+ return c.json(await hospitalityService.listRoomUnitStatusEvents(c.get("db"), query));
357
+ })
358
+ .post("/room-unit-status-events", async (c) => c.json({
359
+ data: await hospitalityService.createRoomUnitStatusEvent(c.get("db"), insertRoomUnitStatusEventSchema.parse(await c.req.json())),
360
+ }, 201))
361
+ .get("/room-unit-status-events/:id", async (c) => {
362
+ const row = await hospitalityService.getRoomUnitStatusEventById(c.get("db"), c.req.param("id"));
363
+ if (!row)
364
+ return c.json({ error: "Room unit status event not found" }, 404);
365
+ return c.json({ data: row });
366
+ })
367
+ .patch("/room-unit-status-events/:id", async (c) => {
368
+ const row = await hospitalityService.updateRoomUnitStatusEvent(c.get("db"), c.req.param("id"), updateRoomUnitStatusEventSchema.parse(await c.req.json()));
369
+ if (!row)
370
+ return c.json({ error: "Room unit status event not found" }, 404);
371
+ return c.json({ data: row });
372
+ })
373
+ .delete("/room-unit-status-events/:id", async (c) => {
374
+ const row = await hospitalityService.deleteRoomUnitStatusEvent(c.get("db"), c.req.param("id"));
375
+ if (!row)
376
+ return c.json({ error: "Room unit status event not found" }, 404);
377
+ return c.json({ success: true });
378
+ })
379
+ .get("/maintenance-blocks", async (c) => {
380
+ const query = maintenanceBlockListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
381
+ return c.json(await hospitalityService.listMaintenanceBlocks(c.get("db"), query));
382
+ })
383
+ .post("/maintenance-blocks", async (c) => c.json({
384
+ data: await hospitalityService.createMaintenanceBlock(c.get("db"), insertMaintenanceBlockSchema.parse(await c.req.json())),
385
+ }, 201))
386
+ .get("/maintenance-blocks/:id", async (c) => {
387
+ const row = await hospitalityService.getMaintenanceBlockById(c.get("db"), c.req.param("id"));
388
+ if (!row)
389
+ return c.json({ error: "Maintenance block not found" }, 404);
390
+ return c.json({ data: row });
391
+ })
392
+ .patch("/maintenance-blocks/:id", async (c) => {
393
+ const row = await hospitalityService.updateMaintenanceBlock(c.get("db"), c.req.param("id"), updateMaintenanceBlockSchema.parse(await c.req.json()));
394
+ if (!row)
395
+ return c.json({ error: "Maintenance block not found" }, 404);
396
+ return c.json({ data: row });
397
+ })
398
+ .delete("/maintenance-blocks/:id", async (c) => {
399
+ const row = await hospitalityService.deleteMaintenanceBlock(c.get("db"), c.req.param("id"));
400
+ if (!row)
401
+ return c.json({ error: "Maintenance block not found" }, 404);
402
+ return c.json({ success: true });
403
+ })
404
+ .get("/housekeeping-tasks", async (c) => {
405
+ const query = housekeepingTaskListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
406
+ return c.json(await hospitalityService.listHousekeepingTasks(c.get("db"), query));
407
+ })
408
+ .post("/housekeeping-tasks", async (c) => c.json({
409
+ data: await hospitalityService.createHousekeepingTask(c.get("db"), insertHousekeepingTaskSchema.parse(await c.req.json())),
410
+ }, 201))
411
+ .get("/housekeeping-tasks/:id", async (c) => {
412
+ const row = await hospitalityService.getHousekeepingTaskById(c.get("db"), c.req.param("id"));
413
+ if (!row)
414
+ return c.json({ error: "Housekeeping task not found" }, 404);
415
+ return c.json({ data: row });
416
+ })
417
+ .patch("/housekeeping-tasks/:id", async (c) => {
418
+ const row = await hospitalityService.updateHousekeepingTask(c.get("db"), c.req.param("id"), updateHousekeepingTaskSchema.parse(await c.req.json()));
419
+ if (!row)
420
+ return c.json({ error: "Housekeeping task not found" }, 404);
421
+ return c.json({ data: row });
422
+ })
423
+ .delete("/housekeeping-tasks/:id", async (c) => {
424
+ const row = await hospitalityService.deleteHousekeepingTask(c.get("db"), c.req.param("id"));
425
+ if (!row)
426
+ return c.json({ error: "Housekeeping task not found" }, 404);
427
+ return c.json({ success: true });
428
+ })
429
+ .get("/stay-operations", async (c) => {
430
+ const query = stayOperationListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
431
+ return c.json(await hospitalityService.listStayOperations(c.get("db"), query));
432
+ })
433
+ .post("/stay-operations", async (c) => c.json({
434
+ data: await hospitalityService.createStayOperation(c.get("db"), insertStayOperationSchema.parse(await c.req.json())),
435
+ }, 201))
436
+ .get("/stay-operations/:id", async (c) => {
437
+ const row = await hospitalityService.getStayOperationById(c.get("db"), c.req.param("id"));
438
+ if (!row)
439
+ return c.json({ error: "Stay operation not found" }, 404);
440
+ return c.json({ data: row });
441
+ })
442
+ .patch("/stay-operations/:id", async (c) => {
443
+ const row = await hospitalityService.updateStayOperation(c.get("db"), c.req.param("id"), updateStayOperationSchema.parse(await c.req.json()));
444
+ if (!row)
445
+ return c.json({ error: "Stay operation not found" }, 404);
446
+ return c.json({ data: row });
447
+ })
448
+ .delete("/stay-operations/:id", async (c) => {
449
+ const row = await hospitalityService.deleteStayOperation(c.get("db"), c.req.param("id"));
450
+ if (!row)
451
+ return c.json({ error: "Stay operation not found" }, 404);
452
+ return c.json({ success: true });
453
+ })
454
+ .get("/stay-checkpoints", async (c) => {
455
+ const query = stayCheckpointListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
456
+ return c.json(await hospitalityService.listStayCheckpoints(c.get("db"), query));
457
+ })
458
+ .post("/stay-checkpoints", async (c) => c.json({
459
+ data: await hospitalityService.createStayCheckpoint(c.get("db"), insertStayCheckpointSchema.parse(await c.req.json())),
460
+ }, 201))
461
+ .get("/stay-checkpoints/:id", async (c) => {
462
+ const row = await hospitalityService.getStayCheckpointById(c.get("db"), c.req.param("id"));
463
+ if (!row)
464
+ return c.json({ error: "Stay checkpoint not found" }, 404);
465
+ return c.json({ data: row });
466
+ })
467
+ .patch("/stay-checkpoints/:id", async (c) => {
468
+ const row = await hospitalityService.updateStayCheckpoint(c.get("db"), c.req.param("id"), updateStayCheckpointSchema.parse(await c.req.json()));
469
+ if (!row)
470
+ return c.json({ error: "Stay checkpoint not found" }, 404);
471
+ return c.json({ data: row });
472
+ })
473
+ .delete("/stay-checkpoints/:id", async (c) => {
474
+ const row = await hospitalityService.deleteStayCheckpoint(c.get("db"), c.req.param("id"));
475
+ if (!row)
476
+ return c.json({ error: "Stay checkpoint not found" }, 404);
477
+ return c.json({ success: true });
478
+ })
479
+ .get("/stay-service-posts", async (c) => {
480
+ const query = stayServicePostListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
481
+ return c.json(await hospitalityService.listStayServicePosts(c.get("db"), query));
482
+ })
483
+ .post("/stay-service-posts", async (c) => c.json({
484
+ data: await hospitalityService.createStayServicePost(c.get("db"), insertStayServicePostSchema.parse(await c.req.json())),
485
+ }, 201))
486
+ .get("/stay-service-posts/:id", async (c) => {
487
+ const row = await hospitalityService.getStayServicePostById(c.get("db"), c.req.param("id"));
488
+ if (!row)
489
+ return c.json({ error: "Stay service post not found" }, 404);
490
+ return c.json({ data: row });
491
+ })
492
+ .patch("/stay-service-posts/:id", async (c) => {
493
+ const row = await hospitalityService.updateStayServicePost(c.get("db"), c.req.param("id"), updateStayServicePostSchema.parse(await c.req.json()));
494
+ if (!row)
495
+ return c.json({ error: "Stay service post not found" }, 404);
496
+ return c.json({ data: row });
497
+ })
498
+ .delete("/stay-service-posts/:id", async (c) => {
499
+ const row = await hospitalityService.deleteStayServicePost(c.get("db"), c.req.param("id"));
500
+ if (!row)
501
+ return c.json({ error: "Stay service post not found" }, 404);
502
+ return c.json({ success: true });
503
+ })
504
+ .get("/stay-folios", async (c) => {
505
+ const query = stayFolioListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
506
+ return c.json(await hospitalityService.listStayFolios(c.get("db"), query));
507
+ })
508
+ .post("/stay-folios", async (c) => c.json({
509
+ data: await hospitalityService.createStayFolio(c.get("db"), insertStayFolioSchema.parse(await c.req.json())),
510
+ }, 201))
511
+ .get("/stay-folios/:id", async (c) => {
512
+ const row = await hospitalityService.getStayFolioById(c.get("db"), c.req.param("id"));
513
+ if (!row)
514
+ return c.json({ error: "Stay folio not found" }, 404);
515
+ return c.json({ data: row });
516
+ })
517
+ .patch("/stay-folios/:id", async (c) => {
518
+ const row = await hospitalityService.updateStayFolio(c.get("db"), c.req.param("id"), updateStayFolioSchema.parse(await c.req.json()));
519
+ if (!row)
520
+ return c.json({ error: "Stay folio not found" }, 404);
521
+ return c.json({ data: row });
522
+ })
523
+ .delete("/stay-folios/:id", async (c) => {
524
+ const row = await hospitalityService.deleteStayFolio(c.get("db"), c.req.param("id"));
525
+ if (!row)
526
+ return c.json({ error: "Stay folio not found" }, 404);
527
+ return c.json({ success: true });
528
+ })
529
+ .get("/stay-folio-lines", async (c) => {
530
+ const query = stayFolioLineListQuerySchema.parse(Object.fromEntries(new URL(c.req.url).searchParams));
531
+ return c.json(await hospitalityService.listStayFolioLines(c.get("db"), query));
532
+ })
533
+ .post("/stay-folio-lines", async (c) => c.json({
534
+ data: await hospitalityService.createStayFolioLine(c.get("db"), insertStayFolioLineSchema.parse(await c.req.json())),
535
+ }, 201))
536
+ .get("/stay-folio-lines/:id", async (c) => {
537
+ const row = await hospitalityService.getStayFolioLineById(c.get("db"), c.req.param("id"));
538
+ if (!row)
539
+ return c.json({ error: "Stay folio line not found" }, 404);
540
+ return c.json({ data: row });
541
+ })
542
+ .patch("/stay-folio-lines/:id", async (c) => {
543
+ const row = await hospitalityService.updateStayFolioLine(c.get("db"), c.req.param("id"), updateStayFolioLineSchema.parse(await c.req.json()));
544
+ if (!row)
545
+ return c.json({ error: "Stay folio line not found" }, 404);
546
+ return c.json({ data: row });
547
+ })
548
+ .delete("/stay-folio-lines/:id", async (c) => {
549
+ const row = await hospitalityService.deleteStayFolioLine(c.get("db"), c.req.param("id"));
550
+ if (!row)
551
+ return c.json({ error: "Stay folio line not found" }, 404);
552
+ return c.json({ success: true });
553
+ });