@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,636 @@
|
|
|
1
|
+
import z from "./Zod";
|
|
2
|
+
import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
3
|
+
import logger from "../../Server/Utils/Logger";
|
|
4
|
+
import { BaseSchema } from "./BaseSchema";
|
|
5
|
+
export class AnalyticsModelSchema extends BaseSchema {
|
|
6
|
+
static getModelSchema(data) {
|
|
7
|
+
const modelType = data.modelType;
|
|
8
|
+
const model = new modelType();
|
|
9
|
+
const columns = model.getTableColumns();
|
|
10
|
+
// Filter out columns with no read permissions
|
|
11
|
+
const filteredColumns = columns.filter((column) => {
|
|
12
|
+
const accessControl = model.getColumnAccessControlFor(column.key);
|
|
13
|
+
if (!accessControl) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const readPermissions = accessControl.read;
|
|
17
|
+
return readPermissions && readPermissions.length > 0;
|
|
18
|
+
});
|
|
19
|
+
const shape = {};
|
|
20
|
+
for (const column of filteredColumns) {
|
|
21
|
+
const key = column.key;
|
|
22
|
+
let zodType;
|
|
23
|
+
if (column.type === TableColumnType.ObjectID) {
|
|
24
|
+
zodType = z.string().openapi({
|
|
25
|
+
type: "string",
|
|
26
|
+
example: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else if (column.type === TableColumnType.Date) {
|
|
30
|
+
zodType = z.date().openapi({
|
|
31
|
+
type: "string",
|
|
32
|
+
format: "date-time",
|
|
33
|
+
example: "2023-01-15T12:30:00.000Z",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else if (column.type === TableColumnType.Text) {
|
|
37
|
+
zodType = z.string().openapi({
|
|
38
|
+
type: "string",
|
|
39
|
+
example: "Example text value",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else if (column.type === TableColumnType.Number) {
|
|
43
|
+
zodType = z.number().openapi({ type: "number", example: 42 });
|
|
44
|
+
}
|
|
45
|
+
else if (column.type === TableColumnType.LongNumber) {
|
|
46
|
+
zodType = z.number().openapi({
|
|
47
|
+
type: "number",
|
|
48
|
+
example: 1000000,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else if (column.type === TableColumnType.Boolean) {
|
|
52
|
+
zodType = z.boolean().openapi({ type: "boolean", example: true });
|
|
53
|
+
}
|
|
54
|
+
else if (column.type === TableColumnType.JSON) {
|
|
55
|
+
zodType = z.any().openapi({
|
|
56
|
+
type: "object",
|
|
57
|
+
example: { key: "value", nested: { data: 123 } },
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else if (column.type === TableColumnType.JSONArray) {
|
|
61
|
+
zodType = z.array(z.any()).openapi({
|
|
62
|
+
type: "array",
|
|
63
|
+
items: {
|
|
64
|
+
type: "object",
|
|
65
|
+
},
|
|
66
|
+
example: [{ key: "value" }, { key2: "value2" }],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else if (column.type === TableColumnType.Decimal) {
|
|
70
|
+
zodType = z.number().openapi({
|
|
71
|
+
type: "number",
|
|
72
|
+
example: 123.45,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else if (column.type === TableColumnType.ArrayNumber) {
|
|
76
|
+
zodType = z.array(z.number()).openapi({
|
|
77
|
+
type: "array",
|
|
78
|
+
items: {
|
|
79
|
+
type: "number",
|
|
80
|
+
},
|
|
81
|
+
example: [1, 2, 3, 4, 5],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else if (column.type === TableColumnType.ArrayText) {
|
|
85
|
+
zodType = z.array(z.string()).openapi({
|
|
86
|
+
type: "array",
|
|
87
|
+
items: {
|
|
88
|
+
type: "string",
|
|
89
|
+
},
|
|
90
|
+
example: ["item1", "item2", "item3"],
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else if (column.type === TableColumnType.NestedModel &&
|
|
94
|
+
column.nestedModel) {
|
|
95
|
+
// Handle nested models recursively
|
|
96
|
+
const nestedShape = {};
|
|
97
|
+
for (const nestedColumn of column.nestedModel.tableColumns) {
|
|
98
|
+
const nestedZodType = this.getZodTypeForColumn(nestedColumn);
|
|
99
|
+
if (nestedColumn.required) {
|
|
100
|
+
nestedShape[nestedColumn.key] = nestedZodType;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
nestedShape[nestedColumn.key] = nestedZodType.optional();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
zodType = z.object(nestedShape).openapi({
|
|
107
|
+
type: "object",
|
|
108
|
+
example: this.generateNestedModelExample(column.nestedModel.tableColumns),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Default fallback
|
|
113
|
+
zodType = z.any().openapi({
|
|
114
|
+
type: "string",
|
|
115
|
+
example: "example_value",
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (column.required) {
|
|
119
|
+
// leave as is
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
zodType = zodType.optional();
|
|
123
|
+
}
|
|
124
|
+
// Add title and description to the schema
|
|
125
|
+
if (column.title) {
|
|
126
|
+
zodType = zodType.describe(column.title);
|
|
127
|
+
}
|
|
128
|
+
shape[key] = zodType;
|
|
129
|
+
}
|
|
130
|
+
const schema = z.object(shape);
|
|
131
|
+
logger.debug(`Analytics model schema for ${model.tableName} created with shape keys: ${Object.keys(shape).join(", ")} (filtered ${columns.length - filteredColumns.length} columns without read permissions)`);
|
|
132
|
+
return schema;
|
|
133
|
+
}
|
|
134
|
+
static getZodTypeForColumn(column) {
|
|
135
|
+
switch (column.type) {
|
|
136
|
+
case TableColumnType.ObjectID:
|
|
137
|
+
return z.string().openapi({
|
|
138
|
+
type: "string",
|
|
139
|
+
example: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
|
140
|
+
});
|
|
141
|
+
case TableColumnType.Date:
|
|
142
|
+
return z.date().openapi({
|
|
143
|
+
type: "string",
|
|
144
|
+
format: "date-time",
|
|
145
|
+
example: "2023-01-15T12:30:00.000Z",
|
|
146
|
+
});
|
|
147
|
+
case TableColumnType.Text:
|
|
148
|
+
return z.string().openapi({
|
|
149
|
+
type: "string",
|
|
150
|
+
example: "Example text",
|
|
151
|
+
});
|
|
152
|
+
case TableColumnType.Number:
|
|
153
|
+
return z.number().openapi({ type: "number", example: 42 });
|
|
154
|
+
case TableColumnType.LongNumber:
|
|
155
|
+
return z.number().openapi({
|
|
156
|
+
type: "number",
|
|
157
|
+
example: 1000000,
|
|
158
|
+
});
|
|
159
|
+
case TableColumnType.Boolean:
|
|
160
|
+
return z.boolean().openapi({ type: "boolean", example: true });
|
|
161
|
+
case TableColumnType.JSON:
|
|
162
|
+
return z.any().openapi({
|
|
163
|
+
type: "object",
|
|
164
|
+
example: { key: "value" },
|
|
165
|
+
});
|
|
166
|
+
case TableColumnType.JSONArray:
|
|
167
|
+
return z.array(z.any()).openapi({
|
|
168
|
+
type: "array",
|
|
169
|
+
items: { type: "object" },
|
|
170
|
+
example: [{ key: "value" }],
|
|
171
|
+
});
|
|
172
|
+
case TableColumnType.Decimal:
|
|
173
|
+
return z.number().openapi({
|
|
174
|
+
type: "number",
|
|
175
|
+
example: 123.45,
|
|
176
|
+
});
|
|
177
|
+
case TableColumnType.ArrayNumber:
|
|
178
|
+
return z.array(z.number()).openapi({
|
|
179
|
+
type: "array",
|
|
180
|
+
items: { type: "number" },
|
|
181
|
+
example: [1, 2, 3],
|
|
182
|
+
});
|
|
183
|
+
case TableColumnType.ArrayText:
|
|
184
|
+
return z.array(z.string()).openapi({
|
|
185
|
+
type: "array",
|
|
186
|
+
items: { type: "string" },
|
|
187
|
+
example: ["item1", "item2"],
|
|
188
|
+
});
|
|
189
|
+
default:
|
|
190
|
+
return z.any().openapi({
|
|
191
|
+
type: "string",
|
|
192
|
+
example: "example_value",
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
static generateNestedModelExample(columns) {
|
|
197
|
+
const example = {};
|
|
198
|
+
for (const column of columns) {
|
|
199
|
+
switch (column.type) {
|
|
200
|
+
case TableColumnType.ObjectID:
|
|
201
|
+
example[column.key] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
|
|
202
|
+
break;
|
|
203
|
+
case TableColumnType.Date:
|
|
204
|
+
example[column.key] = "2023-01-15T12:30:00.000Z";
|
|
205
|
+
break;
|
|
206
|
+
case TableColumnType.Text:
|
|
207
|
+
example[column.key] = "Example text";
|
|
208
|
+
break;
|
|
209
|
+
case TableColumnType.Number:
|
|
210
|
+
example[column.key] = 42;
|
|
211
|
+
break;
|
|
212
|
+
case TableColumnType.Boolean:
|
|
213
|
+
example[column.key] = true;
|
|
214
|
+
break;
|
|
215
|
+
case TableColumnType.JSON:
|
|
216
|
+
example[column.key] = { key: "value" };
|
|
217
|
+
break;
|
|
218
|
+
case TableColumnType.ArrayText:
|
|
219
|
+
example[column.key] = ["item1", "item2"];
|
|
220
|
+
break;
|
|
221
|
+
case TableColumnType.ArrayNumber:
|
|
222
|
+
example[column.key] = [1, 2, 3];
|
|
223
|
+
break;
|
|
224
|
+
default:
|
|
225
|
+
example[column.key] = "example_value";
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return example;
|
|
229
|
+
}
|
|
230
|
+
static getCreateModelSchema(data) {
|
|
231
|
+
const modelType = data.modelType;
|
|
232
|
+
const model = new modelType();
|
|
233
|
+
const columns = model.getTableColumns();
|
|
234
|
+
const shape = {};
|
|
235
|
+
// Exclude system fields from create schema
|
|
236
|
+
const excludedFields = ["_id", "createdAt", "updatedAt"];
|
|
237
|
+
for (const column of columns) {
|
|
238
|
+
const key = column.key;
|
|
239
|
+
if (excludedFields.includes(key)) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
// Skip default value columns in create schema
|
|
243
|
+
if (column.isDefaultValueColumn) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
// Filter out columns with no create permissions
|
|
247
|
+
const accessControl = model.getColumnAccessControlFor(column.key);
|
|
248
|
+
if (!accessControl) {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
const createPermissions = accessControl.create;
|
|
252
|
+
if (!createPermissions || createPermissions.length === 0) {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
const zodType = this.getZodTypeForColumn(column);
|
|
256
|
+
if (column.required) {
|
|
257
|
+
shape[key] = zodType;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
shape[key] = zodType.optional();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return z.object(shape).openapi({
|
|
264
|
+
type: "object",
|
|
265
|
+
description: `Create schema for ${model.tableName || "analytics model"}`,
|
|
266
|
+
example: this.getCreateSchemaExample(modelType),
|
|
267
|
+
additionalProperties: false,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
static getQueryModelSchema(data) {
|
|
271
|
+
const modelType = data.modelType;
|
|
272
|
+
const model = new modelType();
|
|
273
|
+
return this.generateQuerySchema({
|
|
274
|
+
model,
|
|
275
|
+
tableName: model.tableName || "analytics_model",
|
|
276
|
+
getColumns: (model) => {
|
|
277
|
+
const columns = model.getTableColumns();
|
|
278
|
+
return columns.map((column) => {
|
|
279
|
+
return { key: column.key, type: column.type };
|
|
280
|
+
});
|
|
281
|
+
},
|
|
282
|
+
getValidOperatorsForColumnType: (columnType) => {
|
|
283
|
+
return this.getValidOperatorsForColumnType(columnType);
|
|
284
|
+
},
|
|
285
|
+
getOperatorSchema: (operatorType, columnType) => {
|
|
286
|
+
return this.getOperatorSchema(operatorType, columnType);
|
|
287
|
+
},
|
|
288
|
+
getQuerySchemaExample: () => {
|
|
289
|
+
return this.getQuerySchemaExample(modelType);
|
|
290
|
+
},
|
|
291
|
+
getExampleValueForColumn: (columnType) => {
|
|
292
|
+
return this.getExampleValueForColumn(columnType);
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
static getSelectModelSchema(data) {
|
|
297
|
+
const modelType = data.modelType;
|
|
298
|
+
const model = new modelType();
|
|
299
|
+
return this.generateSelectSchema({
|
|
300
|
+
model,
|
|
301
|
+
tableName: model.tableName || "analytics_model",
|
|
302
|
+
getColumns: (model) => {
|
|
303
|
+
const columns = model.getTableColumns();
|
|
304
|
+
return columns.map((column) => {
|
|
305
|
+
return { key: column.key, type: column.type };
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
getSelectSchemaExample: () => {
|
|
309
|
+
return this.getSelectSchemaExample(modelType);
|
|
310
|
+
},
|
|
311
|
+
allowNested: false, // Analytics models typically don't have nested schemas
|
|
312
|
+
getNestedSchema: () => {
|
|
313
|
+
return null;
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
static getSortModelSchema(data) {
|
|
318
|
+
const modelType = data.modelType;
|
|
319
|
+
const model = new modelType();
|
|
320
|
+
return this.generateSortSchema({
|
|
321
|
+
model,
|
|
322
|
+
tableName: model.tableName || "analytics_model",
|
|
323
|
+
getSortableTypes: () => {
|
|
324
|
+
return this.getSortableTypes();
|
|
325
|
+
},
|
|
326
|
+
getColumnsForSorting: (model) => {
|
|
327
|
+
const columns = model.getTableColumns();
|
|
328
|
+
return columns.map((column) => {
|
|
329
|
+
return { key: column.key, type: column.type };
|
|
330
|
+
});
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
static getGroupByModelSchema(data) {
|
|
335
|
+
const modelType = data.modelType;
|
|
336
|
+
const model = new modelType();
|
|
337
|
+
return this.generateGroupBySchema({
|
|
338
|
+
model,
|
|
339
|
+
tableName: model.tableName || "analytics_model",
|
|
340
|
+
getColumns: (model) => {
|
|
341
|
+
const columns = model.getTableColumns();
|
|
342
|
+
return columns.map((column) => {
|
|
343
|
+
return { key: column.key, type: column.type };
|
|
344
|
+
});
|
|
345
|
+
},
|
|
346
|
+
getGroupableTypes: () => {
|
|
347
|
+
return [
|
|
348
|
+
TableColumnType.Text,
|
|
349
|
+
TableColumnType.ObjectID,
|
|
350
|
+
TableColumnType.Boolean,
|
|
351
|
+
TableColumnType.Date,
|
|
352
|
+
TableColumnType.Number,
|
|
353
|
+
];
|
|
354
|
+
},
|
|
355
|
+
getGroupBySchemaExample: () => {
|
|
356
|
+
return this.getGroupBySchemaExample(modelType);
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
static getSortableTypes() {
|
|
361
|
+
return [
|
|
362
|
+
TableColumnType.Text,
|
|
363
|
+
TableColumnType.Number,
|
|
364
|
+
TableColumnType.LongNumber,
|
|
365
|
+
TableColumnType.Date,
|
|
366
|
+
TableColumnType.Boolean,
|
|
367
|
+
TableColumnType.ObjectID,
|
|
368
|
+
TableColumnType.Decimal,
|
|
369
|
+
];
|
|
370
|
+
}
|
|
371
|
+
static getValidOperatorsForColumnType(columnType) {
|
|
372
|
+
switch (columnType) {
|
|
373
|
+
case TableColumnType.Text:
|
|
374
|
+
return ["EqualTo", "NotEqual", "Search", "IsNull", "NotNull"];
|
|
375
|
+
case TableColumnType.Number:
|
|
376
|
+
case TableColumnType.LongNumber:
|
|
377
|
+
case TableColumnType.Decimal:
|
|
378
|
+
return [
|
|
379
|
+
"EqualTo",
|
|
380
|
+
"NotEqual",
|
|
381
|
+
"GreaterThan",
|
|
382
|
+
"LessThan",
|
|
383
|
+
"GreaterThanOrEqual",
|
|
384
|
+
"LessThanOrEqual",
|
|
385
|
+
"IsNull",
|
|
386
|
+
"NotNull",
|
|
387
|
+
];
|
|
388
|
+
case TableColumnType.Date:
|
|
389
|
+
return [
|
|
390
|
+
"EqualTo",
|
|
391
|
+
"NotEqual",
|
|
392
|
+
"GreaterThan",
|
|
393
|
+
"LessThan",
|
|
394
|
+
"GreaterThanOrEqual",
|
|
395
|
+
"LessThanOrEqual",
|
|
396
|
+
"IsNull",
|
|
397
|
+
"NotNull",
|
|
398
|
+
];
|
|
399
|
+
case TableColumnType.Boolean:
|
|
400
|
+
return ["EqualTo", "NotEqual", "IsNull", "NotNull"];
|
|
401
|
+
case TableColumnType.ObjectID:
|
|
402
|
+
return ["EqualTo", "NotEqual", "IsNull", "NotNull"];
|
|
403
|
+
case TableColumnType.JSON:
|
|
404
|
+
case TableColumnType.JSONArray:
|
|
405
|
+
return ["IsNull", "NotNull"];
|
|
406
|
+
case TableColumnType.ArrayText:
|
|
407
|
+
case TableColumnType.ArrayNumber:
|
|
408
|
+
return ["IsNull", "NotNull"];
|
|
409
|
+
default:
|
|
410
|
+
return ["EqualTo", "NotEqual", "IsNull", "NotNull"];
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
static getExampleValueForColumn(columnType) {
|
|
414
|
+
switch (columnType) {
|
|
415
|
+
case TableColumnType.ObjectID:
|
|
416
|
+
return "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
|
|
417
|
+
case TableColumnType.Text:
|
|
418
|
+
return "example text";
|
|
419
|
+
case TableColumnType.Number:
|
|
420
|
+
case TableColumnType.LongNumber:
|
|
421
|
+
return 42;
|
|
422
|
+
case TableColumnType.Decimal:
|
|
423
|
+
return 123.45;
|
|
424
|
+
case TableColumnType.Date:
|
|
425
|
+
return "2023-01-15T12:30:00.000Z";
|
|
426
|
+
case TableColumnType.Boolean:
|
|
427
|
+
return true;
|
|
428
|
+
case TableColumnType.JSON:
|
|
429
|
+
return { key: "value" };
|
|
430
|
+
case TableColumnType.JSONArray:
|
|
431
|
+
return [{ key: "value" }];
|
|
432
|
+
case TableColumnType.ArrayText:
|
|
433
|
+
return ["item1", "item2"];
|
|
434
|
+
case TableColumnType.ArrayNumber:
|
|
435
|
+
return [1, 2, 3];
|
|
436
|
+
default:
|
|
437
|
+
return "example_value";
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
static getCreateSchemaExample(modelType) {
|
|
441
|
+
const model = new modelType();
|
|
442
|
+
const columns = model.getTableColumns();
|
|
443
|
+
const example = {};
|
|
444
|
+
let exampleCount = 0;
|
|
445
|
+
const maxExamples = 3;
|
|
446
|
+
for (const column of columns) {
|
|
447
|
+
if (exampleCount >= maxExamples) {
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
// Skip system fields and default value columns
|
|
451
|
+
if (["_id", "createdAt", "updatedAt"].includes(column.key) ||
|
|
452
|
+
column.isDefaultValueColumn) {
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
// Skip columns with no create permissions
|
|
456
|
+
const accessControl = model.getColumnAccessControlFor(column.key);
|
|
457
|
+
if (!accessControl) {
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
const createPermissions = accessControl.create;
|
|
461
|
+
if (!createPermissions || createPermissions.length === 0) {
|
|
462
|
+
continue;
|
|
463
|
+
}
|
|
464
|
+
example[column.key] = this.getExampleValueForColumn(column.type);
|
|
465
|
+
exampleCount++;
|
|
466
|
+
}
|
|
467
|
+
return example;
|
|
468
|
+
}
|
|
469
|
+
static getQuerySchemaExample(modelType) {
|
|
470
|
+
const model = new modelType();
|
|
471
|
+
const columns = model.getTableColumns();
|
|
472
|
+
const example = {};
|
|
473
|
+
let exampleCount = 0;
|
|
474
|
+
const maxExamples = 2;
|
|
475
|
+
for (const column of columns) {
|
|
476
|
+
if (exampleCount >= maxExamples) {
|
|
477
|
+
break;
|
|
478
|
+
}
|
|
479
|
+
// Check read permissions for query operations
|
|
480
|
+
const accessControl = model.getColumnAccessControlFor(column.key);
|
|
481
|
+
if (!accessControl ||
|
|
482
|
+
!accessControl.read ||
|
|
483
|
+
accessControl.read.length === 0) {
|
|
484
|
+
continue;
|
|
485
|
+
}
|
|
486
|
+
const validOperators = this.getValidOperatorsForColumnType(column.type);
|
|
487
|
+
if (validOperators.length === 0) {
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
if (column.type === TableColumnType.Text) {
|
|
491
|
+
example[column.key] = {
|
|
492
|
+
_type: "EqualTo",
|
|
493
|
+
value: "example text",
|
|
494
|
+
};
|
|
495
|
+
exampleCount++;
|
|
496
|
+
}
|
|
497
|
+
else if (column.type === TableColumnType.Date) {
|
|
498
|
+
example[column.key] = {
|
|
499
|
+
_type: "GreaterThan",
|
|
500
|
+
value: "2023-01-01T00:00:00.000Z",
|
|
501
|
+
};
|
|
502
|
+
exampleCount++;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
return example;
|
|
506
|
+
}
|
|
507
|
+
static getSelectSchemaExample(modelType) {
|
|
508
|
+
const model = new modelType();
|
|
509
|
+
const columns = model.getTableColumns();
|
|
510
|
+
// Add common fields (only if they have read permissions)
|
|
511
|
+
const example = {};
|
|
512
|
+
// Check if _id has read permissions
|
|
513
|
+
const idAccessControl = model.getColumnAccessControlFor("_id");
|
|
514
|
+
if (idAccessControl &&
|
|
515
|
+
idAccessControl.read &&
|
|
516
|
+
idAccessControl.read.length > 0) {
|
|
517
|
+
example["_id"] = true;
|
|
518
|
+
}
|
|
519
|
+
// Check if createdAt has read permissions
|
|
520
|
+
const createdAtAccessControl = model.getColumnAccessControlFor("createdAt");
|
|
521
|
+
if (createdAtAccessControl &&
|
|
522
|
+
createdAtAccessControl.read &&
|
|
523
|
+
createdAtAccessControl.read.length > 0) {
|
|
524
|
+
example["createdAt"] = true;
|
|
525
|
+
}
|
|
526
|
+
// Add first few non-system fields with read permissions
|
|
527
|
+
let fieldCount = 0;
|
|
528
|
+
const maxFields = 3;
|
|
529
|
+
for (const column of columns) {
|
|
530
|
+
if (fieldCount >= maxFields) {
|
|
531
|
+
break;
|
|
532
|
+
}
|
|
533
|
+
if (!["_id", "createdAt", "updatedAt"].includes(column.key)) {
|
|
534
|
+
// Check read permissions
|
|
535
|
+
const accessControl = model.getColumnAccessControlFor(column.key);
|
|
536
|
+
if (accessControl &&
|
|
537
|
+
accessControl.read &&
|
|
538
|
+
accessControl.read.length > 0) {
|
|
539
|
+
example[column.key] = true;
|
|
540
|
+
fieldCount++;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
return example;
|
|
545
|
+
}
|
|
546
|
+
static getGroupBySchemaExample(modelType) {
|
|
547
|
+
const model = new modelType();
|
|
548
|
+
const columns = model.getTableColumns();
|
|
549
|
+
// Find first suitable field for grouping with read permissions
|
|
550
|
+
for (const column of columns) {
|
|
551
|
+
const isGroupable = [
|
|
552
|
+
TableColumnType.Text,
|
|
553
|
+
TableColumnType.ObjectID,
|
|
554
|
+
TableColumnType.Boolean,
|
|
555
|
+
TableColumnType.Date,
|
|
556
|
+
TableColumnType.Number,
|
|
557
|
+
].includes(column.type);
|
|
558
|
+
if (isGroupable &&
|
|
559
|
+
!["_id", "createdAt", "updatedAt"].includes(column.key)) {
|
|
560
|
+
// Check read permissions
|
|
561
|
+
const accessControl = model.getColumnAccessControlFor(column.key);
|
|
562
|
+
if (accessControl &&
|
|
563
|
+
accessControl.read &&
|
|
564
|
+
accessControl.read.length > 0) {
|
|
565
|
+
return { [column.key]: true };
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
// Fallback to createdAt if it has read permissions
|
|
570
|
+
const createdAtAccessControl = model.getColumnAccessControlFor("createdAt");
|
|
571
|
+
if (createdAtAccessControl &&
|
|
572
|
+
createdAtAccessControl.read &&
|
|
573
|
+
createdAtAccessControl.read.length > 0) {
|
|
574
|
+
return { ["createdAt"]: true };
|
|
575
|
+
}
|
|
576
|
+
// Final fallback - return empty object if no columns have read permissions
|
|
577
|
+
return {};
|
|
578
|
+
}
|
|
579
|
+
static getOperatorSchema(operatorType, columnType) {
|
|
580
|
+
const baseValue = this.getBaseValueSchemaForColumnType(columnType);
|
|
581
|
+
switch (operatorType) {
|
|
582
|
+
case "EqualTo":
|
|
583
|
+
case "NotEqual":
|
|
584
|
+
return z.object({
|
|
585
|
+
_type: z.literal(operatorType),
|
|
586
|
+
value: baseValue,
|
|
587
|
+
});
|
|
588
|
+
case "GreaterThan":
|
|
589
|
+
case "LessThan":
|
|
590
|
+
case "GreaterThanOrEqual":
|
|
591
|
+
case "LessThanOrEqual":
|
|
592
|
+
return z.object({
|
|
593
|
+
_type: z.literal(operatorType),
|
|
594
|
+
value: baseValue,
|
|
595
|
+
});
|
|
596
|
+
case "Search":
|
|
597
|
+
return z.object({
|
|
598
|
+
_type: z.literal("Search"),
|
|
599
|
+
value: z.string(),
|
|
600
|
+
});
|
|
601
|
+
case "IsNull":
|
|
602
|
+
case "NotNull":
|
|
603
|
+
return z.object({
|
|
604
|
+
_type: z.literal(operatorType),
|
|
605
|
+
});
|
|
606
|
+
default:
|
|
607
|
+
return z.object({
|
|
608
|
+
_type: z.literal(operatorType),
|
|
609
|
+
value: baseValue.optional(),
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
static getBaseValueSchemaForColumnType(columnType) {
|
|
614
|
+
switch (columnType) {
|
|
615
|
+
case TableColumnType.ObjectID:
|
|
616
|
+
case TableColumnType.Text:
|
|
617
|
+
return z.string();
|
|
618
|
+
case TableColumnType.Number:
|
|
619
|
+
case TableColumnType.LongNumber:
|
|
620
|
+
case TableColumnType.Decimal:
|
|
621
|
+
return z.number();
|
|
622
|
+
case TableColumnType.Date:
|
|
623
|
+
return z.date();
|
|
624
|
+
case TableColumnType.Boolean:
|
|
625
|
+
return z.boolean();
|
|
626
|
+
case TableColumnType.JSON:
|
|
627
|
+
case TableColumnType.JSONArray:
|
|
628
|
+
case TableColumnType.ArrayText:
|
|
629
|
+
case TableColumnType.ArrayNumber:
|
|
630
|
+
return z.any();
|
|
631
|
+
default:
|
|
632
|
+
return z.string();
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
//# sourceMappingURL=AnalyticsModelSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalyticsModelSchema.js","sourceRoot":"","sources":["../../../../Utils/Schema/AnalyticsModelSchema.ts"],"names":[],"mappings":"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"}
|