@oneuptime/common 7.0.4358 → 7.0.4372

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 (37) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +2 -2
  2. package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.ts +2 -2
  3. package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.ts +2 -2
  4. package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.ts +2 -2
  5. package/Models/DatabaseModels/OnCallDutyPolicyTimeLog.ts +2 -2
  6. package/Models/DatabaseModels/Probe.ts +7 -1
  7. package/Models/DatabaseModels/ServiceCatalog.ts +2 -2
  8. package/Models/DatabaseModels/ServiceCopilotCodeRepository.ts +2 -2
  9. package/Server/Utils/OpenAPI.ts +564 -2
  10. package/Utils/Schema/AnalyticsModelSchema.ts +764 -0
  11. package/Utils/Schema/BaseSchema.ts +450 -0
  12. package/Utils/Schema/ModelSchema.ts +176 -407
  13. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +2 -2
  14. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  15. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.js +2 -2
  16. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.js.map +1 -1
  17. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.js +2 -2
  18. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.js.map +1 -1
  19. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.js +2 -2
  20. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.js.map +1 -1
  21. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js +2 -2
  22. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js.map +1 -1
  23. package/build/dist/Models/DatabaseModels/Probe.js +7 -1
  24. package/build/dist/Models/DatabaseModels/Probe.js.map +1 -1
  25. package/build/dist/Models/DatabaseModels/ServiceCatalog.js +2 -2
  26. package/build/dist/Models/DatabaseModels/ServiceCatalog.js.map +1 -1
  27. package/build/dist/Models/DatabaseModels/ServiceCopilotCodeRepository.js +2 -2
  28. package/build/dist/Models/DatabaseModels/ServiceCopilotCodeRepository.js.map +1 -1
  29. package/build/dist/Server/Utils/OpenAPI.js +445 -2
  30. package/build/dist/Server/Utils/OpenAPI.js.map +1 -1
  31. package/build/dist/Utils/Schema/AnalyticsModelSchema.js +636 -0
  32. package/build/dist/Utils/Schema/AnalyticsModelSchema.js.map +1 -0
  33. package/build/dist/Utils/Schema/BaseSchema.js +295 -0
  34. package/build/dist/Utils/Schema/BaseSchema.js.map +1 -0
  35. package/build/dist/Utils/Schema/ModelSchema.js +155 -337
  36. package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,295 @@
1
+ import z from "./Zod";
2
+ import SortOrder from "../../Types/BaseDatabase/SortOrder";
3
+ import logger from "../../Server/Utils/Logger";
4
+ /**
5
+ * Base class for schema generation with common functionality
6
+ * Both ModelSchema and AnalyticsModelSchema extend this class
7
+ */
8
+ export class BaseSchema {
9
+ /**
10
+ * Generate a sort schema for a model
11
+ */
12
+ static generateSortSchema(data) {
13
+ const shape = {};
14
+ const columns = data.getColumnsForSorting(data.model);
15
+ for (const column of columns) {
16
+ const key = column.key;
17
+ const isSortable = data.getSortableTypes().includes(column.type);
18
+ if (!isSortable) {
19
+ continue;
20
+ }
21
+ shape[key] = z
22
+ .enum([SortOrder.Ascending, SortOrder.Descending])
23
+ .optional()
24
+ .openapi({
25
+ type: "string",
26
+ enum: [SortOrder.Ascending, SortOrder.Descending],
27
+ description: `Sort order for ${key} field`,
28
+ example: SortOrder.Ascending,
29
+ });
30
+ }
31
+ return z.object(shape).openapi({
32
+ type: "object",
33
+ description: `Sort schema for ${data.tableName || "model"}. Only sortable fields are included.`,
34
+ example: { createdAt: SortOrder.Descending },
35
+ additionalProperties: false,
36
+ });
37
+ }
38
+ /**
39
+ * Generate a select schema for a model
40
+ */
41
+ static generateSelectSchema(data) {
42
+ const shape = {};
43
+ const columns = data.getColumns(data.model);
44
+ for (const column of columns) {
45
+ const key = column.key;
46
+ // Handle nested schemas if allowed and available
47
+ if (data.allowNested && data.getNestedSchema) {
48
+ const nestedSchema = data.getNestedSchema(key, data.model);
49
+ if (nestedSchema) {
50
+ shape[key] = nestedSchema.openapi({
51
+ type: "object",
52
+ description: `Select fields for nested ${key} entity`,
53
+ example: { id: true, name: true },
54
+ });
55
+ continue;
56
+ }
57
+ }
58
+ shape[key] = z
59
+ .boolean()
60
+ .optional()
61
+ .openapi({
62
+ type: "boolean",
63
+ description: `Select ${key} field in the response`,
64
+ example: true,
65
+ });
66
+ }
67
+ return z.object(shape).openapi({
68
+ type: "object",
69
+ description: `Select schema for ${data.tableName || "model"}. Set fields to true to include them in the response.`,
70
+ example: data.getSelectSchemaExample(data.model),
71
+ additionalProperties: false,
72
+ });
73
+ }
74
+ /**
75
+ * Generate a group by schema for a model
76
+ */
77
+ static generateGroupBySchema(data) {
78
+ const shape = {};
79
+ const columns = data.getColumns(data.model);
80
+ for (const column of columns) {
81
+ const key = column.key;
82
+ const isGroupable = data
83
+ .getGroupableTypes()
84
+ .includes(column.type);
85
+ if (!isGroupable) {
86
+ continue;
87
+ }
88
+ shape[key] = z
89
+ .literal(true)
90
+ .optional()
91
+ .openapi({
92
+ type: "boolean",
93
+ description: `Group by ${key} field. Only one field can be selected for grouping.`,
94
+ example: true,
95
+ });
96
+ }
97
+ return z.object(shape).openapi({
98
+ type: "object",
99
+ description: `Group by schema for ${data.tableName || "model"}. Only one field can be set to true for grouping.`,
100
+ example: data.getGroupBySchemaExample(data.model),
101
+ additionalProperties: false,
102
+ });
103
+ }
104
+ /**
105
+ * Generate a query schema for a model
106
+ */
107
+ static generateQuerySchema(data) {
108
+ const shape = {};
109
+ const columns = data.getColumns(data.model);
110
+ for (const column of columns) {
111
+ const key = column.key;
112
+ // Get valid operators for this column type
113
+ const validOperators = data.getValidOperatorsForColumnType(column.type);
114
+ if (validOperators.length === 0) {
115
+ continue;
116
+ }
117
+ let columnSchema;
118
+ if (data.getOperatorSchema) {
119
+ // Use advanced operator schemas (for regular ModelSchema)
120
+ const operatorSchemas = validOperators.map((operatorType) => {
121
+ return data.getOperatorSchema(operatorType, column.type);
122
+ });
123
+ if (operatorSchemas.length === 1 && operatorSchemas[0]) {
124
+ columnSchema = operatorSchemas[0].optional();
125
+ }
126
+ else if (operatorSchemas.length > 1) {
127
+ columnSchema = z
128
+ .union(operatorSchemas)
129
+ .optional();
130
+ }
131
+ else {
132
+ columnSchema = z.any().optional();
133
+ }
134
+ }
135
+ else {
136
+ // Use simple operator schema (for AnalyticsModelSchema)
137
+ columnSchema = z
138
+ .object({
139
+ _type: z.enum(validOperators),
140
+ value: z.any().optional(),
141
+ })
142
+ .optional();
143
+ }
144
+ columnSchema = columnSchema.openapi({
145
+ type: "object",
146
+ description: `Query operators for ${key} field of type ${column.type}. Supported operators: ${validOperators.join(", ")}`,
147
+ example: {
148
+ _type: "EqualTo",
149
+ value: data.getExampleValueForColumn(column.type),
150
+ },
151
+ });
152
+ shape[key] = columnSchema;
153
+ }
154
+ return z.object(shape).openapi({
155
+ type: "object",
156
+ description: `Query schema for ${data.tableName || "model"}. Each field can use various operators based on its data type.`,
157
+ example: data.getQuerySchemaExample(data.model),
158
+ additionalProperties: false,
159
+ });
160
+ }
161
+ /**
162
+ * Generate a create schema for a model
163
+ */
164
+ static generateCreateSchema(data) {
165
+ const shape = {};
166
+ const columns = data.getColumns(data.model);
167
+ const excludedFields = data.excludedFields || [
168
+ "_id",
169
+ "createdAt",
170
+ "updatedAt",
171
+ ];
172
+ for (const column of columns) {
173
+ const key = column.key;
174
+ if (excludedFields.includes(key)) {
175
+ continue;
176
+ }
177
+ // Skip default value columns in create schema
178
+ if (column.isDefaultValueColumn) {
179
+ continue;
180
+ }
181
+ const zodType = data.getZodTypeForColumn(column);
182
+ if (column.required) {
183
+ shape[key] = zodType;
184
+ }
185
+ else {
186
+ shape[key] = zodType.optional();
187
+ }
188
+ }
189
+ return z.object(shape).openapi({
190
+ type: "object",
191
+ description: `Create schema for ${data.tableName || "model"}`,
192
+ example: data.getCreateSchemaExample(data.model),
193
+ additionalProperties: false,
194
+ });
195
+ }
196
+ /**
197
+ * Helper method to generate common example values for different data types
198
+ */
199
+ static getCommonExampleValue(dataType, isSecondValue = false) {
200
+ switch (dataType.toLowerCase()) {
201
+ case "objectid":
202
+ case "id":
203
+ return "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
204
+ case "text":
205
+ case "string":
206
+ return isSecondValue ? "example_text_2" : "example_text_1";
207
+ case "email":
208
+ return isSecondValue ? "user2@example.com" : "user@example.com";
209
+ case "number":
210
+ case "integer":
211
+ return isSecondValue ? 100 : 42;
212
+ case "date":
213
+ case "datetime":
214
+ return isSecondValue
215
+ ? "2023-12-31T23:59:59.000Z"
216
+ : "2023-01-15T12:30:00.000Z";
217
+ case "boolean":
218
+ return !isSecondValue;
219
+ case "json":
220
+ case "object":
221
+ return isSecondValue ? { key2: "value2" } : { key: "value" };
222
+ case "array":
223
+ return isSecondValue ? ["item3", "item4"] : ["item1", "item2"];
224
+ default:
225
+ return isSecondValue ? "example_value_2" : "example_value_1";
226
+ }
227
+ }
228
+ /**
229
+ * Helper method to generate select schema examples
230
+ */
231
+ static generateSelectSchemaExample(data) {
232
+ const columns = data.getColumns(data.model);
233
+ const example = {};
234
+ const commonFields = data.commonFields || [
235
+ "_id",
236
+ "createdAt",
237
+ "updatedAt",
238
+ ];
239
+ const maxFields = data.maxFields || 5;
240
+ // Add common fields that exist
241
+ for (const field of commonFields) {
242
+ const hasField = columns.some((col) => {
243
+ return col.key === field;
244
+ });
245
+ if (hasField) {
246
+ example[field] = true;
247
+ }
248
+ }
249
+ // Add priority fields if specified
250
+ let fieldCount = 0;
251
+ if (data.priorityFieldTypes) {
252
+ for (const column of columns) {
253
+ if (fieldCount >= maxFields) {
254
+ break;
255
+ }
256
+ if (!commonFields.includes(column.key) &&
257
+ column.type &&
258
+ data.priorityFieldTypes.includes(column.type)) {
259
+ example[column.key] = true;
260
+ fieldCount++;
261
+ }
262
+ }
263
+ }
264
+ return example;
265
+ }
266
+ /**
267
+ * Helper method to generate group by schema examples
268
+ */
269
+ static generateGroupBySchemaExample(data) {
270
+ const columns = data.getColumns(data.model);
271
+ const excludeFields = data.excludeFields || [
272
+ "_id",
273
+ "createdAt",
274
+ "updatedAt",
275
+ ];
276
+ // Find first suitable field for grouping
277
+ for (const column of columns) {
278
+ const isGroupable = data
279
+ .getGroupableTypes()
280
+ .includes(column.type);
281
+ if (isGroupable && !excludeFields.includes(column.key)) {
282
+ return { [column.key]: true };
283
+ }
284
+ }
285
+ // Fallback
286
+ return { createdAt: true };
287
+ }
288
+ /**
289
+ * Log schema generation debug information
290
+ */
291
+ static logSchemaGeneration(schemaType, tableName, shape) {
292
+ logger.debug(`${schemaType} schema for ${tableName} created with shape keys: ${Object.keys(shape).join(", ")}`);
293
+ }
294
+ }
295
+ //# sourceMappingURL=BaseSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSchema.js","sourceRoot":"","sources":["../../../../Utils/Schema/BaseSchema.ts"],"names":[],"mappings":"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"}