@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.
- package/Models/AnalyticsModels/ExceptionInstance.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyTimeLog.ts +2 -2
- package/Models/DatabaseModels/Probe.ts +7 -1
- package/Models/DatabaseModels/ServiceCatalog.ts +2 -2
- package/Models/DatabaseModels/ServiceCopilotCodeRepository.ts +2 -2
- package/Server/Utils/OpenAPI.ts +564 -2
- package/Utils/Schema/AnalyticsModelSchema.ts +764 -0
- package/Utils/Schema/BaseSchema.ts +450 -0
- package/Utils/Schema/ModelSchema.ts +176 -407
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +2 -2
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Probe.js +7 -1
- package/build/dist/Models/DatabaseModels/Probe.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceCatalog.js +2 -2
- package/build/dist/Models/DatabaseModels/ServiceCatalog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceCopilotCodeRepository.js +2 -2
- package/build/dist/Models/DatabaseModels/ServiceCopilotCodeRepository.js.map +1 -1
- package/build/dist/Server/Utils/OpenAPI.js +445 -2
- package/build/dist/Server/Utils/OpenAPI.js.map +1 -1
- package/build/dist/Utils/Schema/AnalyticsModelSchema.js +636 -0
- package/build/dist/Utils/Schema/AnalyticsModelSchema.js.map +1 -0
- package/build/dist/Utils/Schema/BaseSchema.js +295 -0
- package/build/dist/Utils/Schema/BaseSchema.js.map +1 -0
- package/build/dist/Utils/Schema/ModelSchema.js +155 -337
- package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
- 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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"}
|