@objectql/core 3.0.0 → 4.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.
- package/CHANGELOG.md +32 -0
- package/IMPLEMENTATION_STATUS.md +364 -0
- package/README.md +31 -9
- package/RUNTIME_INTEGRATION.md +391 -0
- package/dist/ai-agent.d.ts +4 -3
- package/dist/ai-agent.js +10 -3
- package/dist/ai-agent.js.map +1 -1
- package/dist/app.d.ts +29 -6
- package/dist/app.js +117 -58
- package/dist/app.js.map +1 -1
- package/dist/formula-engine.d.ts +7 -0
- package/dist/formula-engine.js +9 -2
- package/dist/formula-engine.js.map +1 -1
- package/dist/formula-plugin.d.ts +52 -0
- package/dist/formula-plugin.js +107 -0
- package/dist/formula-plugin.js.map +1 -0
- package/dist/index.d.ts +13 -3
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +89 -0
- package/dist/plugin.js +99 -0
- package/dist/plugin.js.map +1 -0
- package/dist/query/filter-translator.d.ts +37 -0
- package/dist/query/filter-translator.js +135 -0
- package/dist/query/filter-translator.js.map +1 -0
- package/dist/query/index.d.ts +22 -0
- package/dist/query/index.js +39 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/query-analyzer.d.ts +186 -0
- package/dist/query/query-analyzer.js +349 -0
- package/dist/query/query-analyzer.js.map +1 -0
- package/dist/query/query-builder.d.ts +27 -0
- package/dist/query/query-builder.js +71 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/query-service.d.ts +150 -0
- package/dist/query/query-service.js +268 -0
- package/dist/query/query-service.js.map +1 -0
- package/dist/repository.d.ts +23 -2
- package/dist/repository.js +62 -13
- package/dist/repository.js.map +1 -1
- package/dist/util.d.ts +7 -0
- package/dist/util.js +18 -3
- package/dist/util.js.map +1 -1
- package/dist/validator-plugin.d.ts +56 -0
- package/dist/validator-plugin.js +106 -0
- package/dist/validator-plugin.js.map +1 -0
- package/dist/validator.d.ts +7 -0
- package/dist/validator.js +10 -8
- package/dist/validator.js.map +1 -1
- package/jest.config.js +16 -0
- package/package.json +8 -5
- package/src/ai-agent.ts +8 -0
- package/src/app.ts +136 -72
- package/src/formula-engine.ts +8 -0
- package/src/formula-plugin.ts +141 -0
- package/src/index.ts +25 -3
- package/src/plugin.ts +179 -0
- package/src/query/filter-translator.ts +147 -0
- package/src/query/index.ts +24 -0
- package/src/query/query-analyzer.ts +535 -0
- package/src/query/query-builder.ts +80 -0
- package/src/query/query-service.ts +392 -0
- package/src/repository.ts +81 -17
- package/src/util.ts +19 -3
- package/src/validator-plugin.ts +140 -0
- package/src/validator.ts +12 -5
- package/test/__mocks__/@objectstack/runtime.ts +255 -0
- package/test/app.test.ts +23 -35
- package/test/filter-syntax.test.ts +233 -0
- package/test/formula-engine.test.ts +8 -0
- package/test/formula-integration.test.ts +8 -0
- package/test/formula-plugin.test.ts +197 -0
- package/test/introspection.test.ts +8 -0
- package/test/mock-driver.ts +8 -0
- package/test/plugin-integration.test.ts +213 -0
- package/test/repository-validation.test.ts +8 -0
- package/test/repository.test.ts +8 -0
- package/test/util.test.ts +9 -1
- package/test/utils.ts +8 -0
- package/test/validator-plugin.test.ts +126 -0
- package/test/validator.test.ts +8 -0
- package/tsconfig.json +9 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/action.d.ts +0 -7
- package/dist/action.js +0 -23
- package/dist/action.js.map +0 -1
- package/dist/hook.d.ts +0 -8
- package/dist/hook.js +0 -25
- package/dist/hook.js.map +0 -1
- package/dist/object.d.ts +0 -3
- package/dist/object.js +0 -28
- package/dist/object.js.map +0 -1
- package/src/action.ts +0 -40
- package/src/hook.ts +0 -42
- package/src/object.ts +0 -26
- package/test/action.test.ts +0 -276
- package/test/hook.test.ts +0 -343
- package/test/object.test.ts +0 -183
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ObjectQL Query Service
|
|
4
|
+
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.QueryService = void 0;
|
|
11
|
+
const query_builder_1 = require("./query-builder");
|
|
12
|
+
/**
|
|
13
|
+
* Query Service
|
|
14
|
+
*
|
|
15
|
+
* Handles all query execution logic, separating query concerns from
|
|
16
|
+
* the repository pattern. This service is responsible for:
|
|
17
|
+
* - Building QueryAST from UnifiedQuery
|
|
18
|
+
* - Executing queries via drivers
|
|
19
|
+
* - Optional query profiling and analysis
|
|
20
|
+
*
|
|
21
|
+
* The QueryService is registered as a service in the ObjectQLPlugin
|
|
22
|
+
* and can be used by Repository for all read operations.
|
|
23
|
+
*/
|
|
24
|
+
class QueryService {
|
|
25
|
+
constructor(datasources, metadata) {
|
|
26
|
+
this.datasources = datasources;
|
|
27
|
+
this.metadata = metadata;
|
|
28
|
+
this.queryBuilder = new query_builder_1.QueryBuilder();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the driver for a specific object
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
getDriver(objectName) {
|
|
35
|
+
const obj = this.getSchema(objectName);
|
|
36
|
+
const datasourceName = obj.datasource || 'default';
|
|
37
|
+
const driver = this.datasources[datasourceName];
|
|
38
|
+
if (!driver) {
|
|
39
|
+
throw new Error(`Datasource '${datasourceName}' not found for object '${objectName}'`);
|
|
40
|
+
}
|
|
41
|
+
return driver;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the schema for an object
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
getSchema(objectName) {
|
|
48
|
+
const obj = this.metadata.get('object', objectName);
|
|
49
|
+
if (!obj) {
|
|
50
|
+
throw new Error(`Object '${objectName}' not found in metadata`);
|
|
51
|
+
}
|
|
52
|
+
return obj;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build QueryAST from UnifiedQuery
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
buildQueryAST(objectName, query) {
|
|
59
|
+
return this.queryBuilder.build(objectName, query);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Execute a find query
|
|
63
|
+
*
|
|
64
|
+
* @param objectName - The object to query
|
|
65
|
+
* @param query - The unified query
|
|
66
|
+
* @param options - Query execution options
|
|
67
|
+
* @returns Array of matching records
|
|
68
|
+
*/
|
|
69
|
+
async find(objectName, query = {}, options = {}) {
|
|
70
|
+
const driver = this.getDriver(objectName);
|
|
71
|
+
const startTime = options.profile ? Date.now() : 0;
|
|
72
|
+
// Build QueryAST
|
|
73
|
+
const ast = this.buildQueryAST(objectName, query);
|
|
74
|
+
// Execute query via driver
|
|
75
|
+
const driverOptions = {
|
|
76
|
+
transaction: options.transaction,
|
|
77
|
+
...options.driverOptions
|
|
78
|
+
};
|
|
79
|
+
let results;
|
|
80
|
+
let count;
|
|
81
|
+
if (driver.find) {
|
|
82
|
+
// Legacy driver interface
|
|
83
|
+
const result = await driver.find(objectName, query, driverOptions);
|
|
84
|
+
results = Array.isArray(result) ? result : ((result === null || result === void 0 ? void 0 : result.value) || []);
|
|
85
|
+
count = (typeof result === 'object' && !Array.isArray(result) && (result === null || result === void 0 ? void 0 : result.count) !== undefined) ? result.count : undefined;
|
|
86
|
+
}
|
|
87
|
+
else if (driver.executeQuery) {
|
|
88
|
+
// New DriverInterface
|
|
89
|
+
const result = await driver.executeQuery(ast, driverOptions);
|
|
90
|
+
results = result.value || [];
|
|
91
|
+
count = result.count;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
throw new Error(`Driver does not support query execution`);
|
|
95
|
+
}
|
|
96
|
+
const executionTime = options.profile ? Date.now() - startTime : 0;
|
|
97
|
+
return {
|
|
98
|
+
value: results,
|
|
99
|
+
count,
|
|
100
|
+
profile: options.profile ? {
|
|
101
|
+
executionTime,
|
|
102
|
+
ast,
|
|
103
|
+
rowsScanned: results.length,
|
|
104
|
+
} : undefined
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Execute a findOne query by ID
|
|
109
|
+
*
|
|
110
|
+
* @param objectName - The object to query
|
|
111
|
+
* @param id - The record ID
|
|
112
|
+
* @param options - Query execution options
|
|
113
|
+
* @returns The matching record or undefined
|
|
114
|
+
*/
|
|
115
|
+
async findOne(objectName, id, options = {}) {
|
|
116
|
+
var _a;
|
|
117
|
+
const driver = this.getDriver(objectName);
|
|
118
|
+
const startTime = options.profile ? Date.now() : 0;
|
|
119
|
+
const driverOptions = {
|
|
120
|
+
transaction: options.transaction,
|
|
121
|
+
...options.driverOptions
|
|
122
|
+
};
|
|
123
|
+
let result;
|
|
124
|
+
if (driver.findOne) {
|
|
125
|
+
// Legacy driver interface
|
|
126
|
+
result = await driver.findOne(objectName, id, driverOptions);
|
|
127
|
+
}
|
|
128
|
+
else if (driver.get) {
|
|
129
|
+
// Alternative method name
|
|
130
|
+
result = await driver.get(objectName, String(id), driverOptions);
|
|
131
|
+
}
|
|
132
|
+
else if (driver.executeQuery) {
|
|
133
|
+
// Fallback to query with ID filter
|
|
134
|
+
const query = {
|
|
135
|
+
filters: [['_id', '=', id]]
|
|
136
|
+
};
|
|
137
|
+
const ast = this.buildQueryAST(objectName, query);
|
|
138
|
+
const queryResult = await driver.executeQuery(ast, driverOptions);
|
|
139
|
+
result = (_a = queryResult.value) === null || _a === void 0 ? void 0 : _a[0];
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
throw new Error(`Driver does not support findOne operation`);
|
|
143
|
+
}
|
|
144
|
+
const executionTime = options.profile ? Date.now() - startTime : 0;
|
|
145
|
+
return {
|
|
146
|
+
value: result,
|
|
147
|
+
profile: options.profile ? {
|
|
148
|
+
executionTime,
|
|
149
|
+
rowsScanned: result ? 1 : 0,
|
|
150
|
+
} : undefined
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Execute a count query
|
|
155
|
+
*
|
|
156
|
+
* @param objectName - The object to query
|
|
157
|
+
* @param filters - Optional filters
|
|
158
|
+
* @param options - Query execution options
|
|
159
|
+
* @returns Count of matching records
|
|
160
|
+
*/
|
|
161
|
+
async count(objectName, filters, options = {}) {
|
|
162
|
+
var _a, _b, _c;
|
|
163
|
+
const driver = this.getDriver(objectName);
|
|
164
|
+
const startTime = options.profile ? Date.now() : 0;
|
|
165
|
+
const query = filters ? { filters } : {};
|
|
166
|
+
const ast = this.buildQueryAST(objectName, query);
|
|
167
|
+
const driverOptions = {
|
|
168
|
+
transaction: options.transaction,
|
|
169
|
+
...options.driverOptions
|
|
170
|
+
};
|
|
171
|
+
let count;
|
|
172
|
+
if (driver.count) {
|
|
173
|
+
// Legacy driver interface
|
|
174
|
+
count = await driver.count(objectName, filters || [], driverOptions);
|
|
175
|
+
}
|
|
176
|
+
else if (driver.executeQuery) {
|
|
177
|
+
// Use executeQuery and count results
|
|
178
|
+
// Note: This is inefficient for large datasets
|
|
179
|
+
// Ideally, driver should support count-specific optimization
|
|
180
|
+
const result = await driver.executeQuery(ast, driverOptions);
|
|
181
|
+
count = (_c = (_a = result.count) !== null && _a !== void 0 ? _a : (_b = result.value) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
throw new Error(`Driver does not support count operation`);
|
|
185
|
+
}
|
|
186
|
+
const executionTime = options.profile ? Date.now() - startTime : 0;
|
|
187
|
+
return {
|
|
188
|
+
value: count,
|
|
189
|
+
profile: options.profile ? {
|
|
190
|
+
executionTime,
|
|
191
|
+
ast,
|
|
192
|
+
} : undefined
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Execute an aggregate query
|
|
197
|
+
*
|
|
198
|
+
* @param objectName - The object to query
|
|
199
|
+
* @param query - The aggregation query using UnifiedQuery format
|
|
200
|
+
* @param options - Query execution options
|
|
201
|
+
* @returns Aggregation results
|
|
202
|
+
*/
|
|
203
|
+
async aggregate(objectName, query, options = {}) {
|
|
204
|
+
const driver = this.getDriver(objectName);
|
|
205
|
+
const startTime = options.profile ? Date.now() : 0;
|
|
206
|
+
const driverOptions = {
|
|
207
|
+
transaction: options.transaction,
|
|
208
|
+
...options.driverOptions
|
|
209
|
+
};
|
|
210
|
+
let results;
|
|
211
|
+
if (driver.aggregate) {
|
|
212
|
+
// Driver supports aggregation
|
|
213
|
+
results = await driver.aggregate(objectName, query, driverOptions);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
// Driver doesn't support aggregation
|
|
217
|
+
throw new Error(`Driver does not support aggregate operations. Consider using a driver that supports aggregation.`);
|
|
218
|
+
}
|
|
219
|
+
const executionTime = options.profile ? Date.now() - startTime : 0;
|
|
220
|
+
return {
|
|
221
|
+
value: results,
|
|
222
|
+
profile: options.profile ? {
|
|
223
|
+
executionTime,
|
|
224
|
+
rowsScanned: results.length,
|
|
225
|
+
} : undefined
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Execute a direct SQL/query passthrough
|
|
230
|
+
*
|
|
231
|
+
* This bypasses ObjectQL's query builder and executes raw queries.
|
|
232
|
+
* Use with caution as it bypasses security and validation.
|
|
233
|
+
*
|
|
234
|
+
* @param objectName - The object (determines which datasource to use)
|
|
235
|
+
* @param queryString - Raw query string (SQL, MongoDB query, etc.)
|
|
236
|
+
* @param params - Query parameters (for parameterized queries)
|
|
237
|
+
* @param options - Query execution options
|
|
238
|
+
* @returns Query results
|
|
239
|
+
*/
|
|
240
|
+
async directQuery(objectName, queryString, params, options = {}) {
|
|
241
|
+
const driver = this.getDriver(objectName);
|
|
242
|
+
const startTime = options.profile ? Date.now() : 0;
|
|
243
|
+
const driverOptions = {
|
|
244
|
+
transaction: options.transaction,
|
|
245
|
+
...options.driverOptions
|
|
246
|
+
};
|
|
247
|
+
let results;
|
|
248
|
+
if (driver.directQuery) {
|
|
249
|
+
results = await driver.directQuery(queryString, params);
|
|
250
|
+
}
|
|
251
|
+
else if (driver.query) {
|
|
252
|
+
// Alternative method name
|
|
253
|
+
results = await driver.query(queryString, params);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
throw new Error(`Driver does not support direct query execution`);
|
|
257
|
+
}
|
|
258
|
+
const executionTime = options.profile ? Date.now() - startTime : 0;
|
|
259
|
+
return {
|
|
260
|
+
value: results,
|
|
261
|
+
profile: options.profile ? {
|
|
262
|
+
executionTime,
|
|
263
|
+
} : undefined
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
exports.QueryService = QueryService;
|
|
268
|
+
//# sourceMappingURL=query-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-service.js","sourceRoot":"","sources":["../../src/query/query-service.ts"],"names":[],"mappings":"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"}
|
package/dist/repository.d.ts
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectQL
|
|
3
|
+
* Copyright (c) 2026-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
1
8
|
import { ObjectQLContext, IObjectQL, ObjectConfig, UnifiedQuery } from '@objectql/types';
|
|
2
9
|
export declare class ObjectRepository {
|
|
3
10
|
private objectName;
|
|
4
11
|
private context;
|
|
5
12
|
private app;
|
|
6
|
-
private
|
|
7
|
-
private formulaEngine;
|
|
13
|
+
private queryBuilder;
|
|
8
14
|
constructor(objectName: string, context: ObjectQLContext, app: IObjectQL);
|
|
15
|
+
/**
|
|
16
|
+
* Get validator instance from kernel (via plugin)
|
|
17
|
+
* Falls back to creating a new instance if not available
|
|
18
|
+
*/
|
|
19
|
+
private getValidator;
|
|
20
|
+
/**
|
|
21
|
+
* Get formula engine instance from kernel (via plugin)
|
|
22
|
+
* Falls back to creating a new instance if not available
|
|
23
|
+
*/
|
|
24
|
+
private getFormulaEngine;
|
|
9
25
|
private getDriver;
|
|
26
|
+
private getKernel;
|
|
10
27
|
private getOptions;
|
|
28
|
+
/**
|
|
29
|
+
* Translates ObjectQL UnifiedQuery to ObjectStack QueryAST format
|
|
30
|
+
*/
|
|
31
|
+
private buildQueryAST;
|
|
11
32
|
getSchema(): ObjectConfig;
|
|
12
33
|
private getHookAPI;
|
|
13
34
|
private getUserFromContext;
|
package/dist/repository.js
CHANGED
|
@@ -1,28 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ObjectQL
|
|
4
|
+
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.ObjectRepository = void 0;
|
|
4
11
|
const types_1 = require("@objectql/types");
|
|
5
12
|
const validator_1 = require("./validator");
|
|
6
13
|
const formula_engine_1 = require("./formula-engine");
|
|
14
|
+
const query_1 = require("./query");
|
|
7
15
|
class ObjectRepository {
|
|
8
16
|
constructor(objectName, context, app) {
|
|
9
17
|
this.objectName = objectName;
|
|
10
18
|
this.context = context;
|
|
11
19
|
this.app = app;
|
|
12
|
-
this.
|
|
13
|
-
|
|
20
|
+
this.queryBuilder = new query_1.QueryBuilder();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get validator instance from kernel (via plugin)
|
|
24
|
+
* Falls back to creating a new instance if not available
|
|
25
|
+
*/
|
|
26
|
+
getValidator() {
|
|
27
|
+
const kernel = this.getKernel();
|
|
28
|
+
if (kernel.validator) {
|
|
29
|
+
return kernel.validator;
|
|
30
|
+
}
|
|
31
|
+
// Fallback for backward compatibility
|
|
32
|
+
return new validator_1.Validator();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get formula engine instance from kernel (via plugin)
|
|
36
|
+
* Falls back to creating a new instance if not available
|
|
37
|
+
*/
|
|
38
|
+
getFormulaEngine() {
|
|
39
|
+
const kernel = this.getKernel();
|
|
40
|
+
if (kernel.formulaEngine) {
|
|
41
|
+
return kernel.formulaEngine;
|
|
42
|
+
}
|
|
43
|
+
// Fallback for backward compatibility
|
|
44
|
+
return new formula_engine_1.FormulaEngine();
|
|
14
45
|
}
|
|
15
46
|
getDriver() {
|
|
16
47
|
const obj = this.getSchema();
|
|
17
48
|
const datasourceName = obj.datasource || 'default';
|
|
18
49
|
return this.app.datasource(datasourceName);
|
|
19
50
|
}
|
|
51
|
+
getKernel() {
|
|
52
|
+
return this.app.getKernel();
|
|
53
|
+
}
|
|
20
54
|
getOptions(extra = {}) {
|
|
21
55
|
return {
|
|
22
56
|
transaction: this.context.transactionHandle,
|
|
23
57
|
...extra
|
|
24
58
|
};
|
|
25
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Translates ObjectQL UnifiedQuery to ObjectStack QueryAST format
|
|
62
|
+
*/
|
|
63
|
+
buildQueryAST(query) {
|
|
64
|
+
return this.queryBuilder.build(this.objectName, query);
|
|
65
|
+
}
|
|
26
66
|
getSchema() {
|
|
27
67
|
const obj = this.app.getObject(this.objectName);
|
|
28
68
|
if (!obj) {
|
|
@@ -69,7 +109,7 @@ class ObjectRepository {
|
|
|
69
109
|
continue;
|
|
70
110
|
}
|
|
71
111
|
const value = record[fieldName];
|
|
72
|
-
const fieldResults = await this.
|
|
112
|
+
const fieldResults = await this.getValidator().validateField(fieldName, fieldConfig, value, {
|
|
73
113
|
record,
|
|
74
114
|
previousRecord,
|
|
75
115
|
operation,
|
|
@@ -99,7 +139,7 @@ class ObjectRepository {
|
|
|
99
139
|
api: this.getHookAPI(),
|
|
100
140
|
changedFields,
|
|
101
141
|
};
|
|
102
|
-
const result = await this.
|
|
142
|
+
const result = await this.getValidator().validate(schema.validation.rules, validationContext);
|
|
103
143
|
allResults.push(...result.results);
|
|
104
144
|
}
|
|
105
145
|
// 3. Collect errors and throw if any
|
|
@@ -143,7 +183,7 @@ class ObjectRepository {
|
|
|
143
183
|
// Evaluate each formula field
|
|
144
184
|
for (const [fieldName, fieldConfig] of Object.entries(schema.fields)) {
|
|
145
185
|
if (fieldConfig.type === 'formula' && fieldConfig.formula) {
|
|
146
|
-
const result = this.
|
|
186
|
+
const result = this.getFormulaEngine().evaluate(fieldConfig.formula, formulaContext, fieldConfig.data_type || 'text', { strict: true });
|
|
147
187
|
if (result.success) {
|
|
148
188
|
record[fieldName] = result.value;
|
|
149
189
|
}
|
|
@@ -177,10 +217,12 @@ class ObjectRepository {
|
|
|
177
217
|
query
|
|
178
218
|
};
|
|
179
219
|
await this.app.triggerHook('beforeFind', this.objectName, hookCtx);
|
|
180
|
-
//
|
|
181
|
-
const
|
|
220
|
+
// Build QueryAST and execute via kernel
|
|
221
|
+
const ast = this.buildQueryAST(hookCtx.query || {});
|
|
222
|
+
const kernelResult = await this.getKernel().find(this.objectName, ast);
|
|
223
|
+
const results = kernelResult.value;
|
|
182
224
|
// Evaluate formulas for each result
|
|
183
|
-
const resultsWithFormulas = results.map(record => this.evaluateFormulas(record));
|
|
225
|
+
const resultsWithFormulas = results.map((record) => this.evaluateFormulas(record));
|
|
184
226
|
hookCtx.result = resultsWithFormulas;
|
|
185
227
|
await this.app.triggerHook('afterFind', this.objectName, hookCtx);
|
|
186
228
|
return hookCtx.result;
|
|
@@ -197,7 +239,8 @@ class ObjectRepository {
|
|
|
197
239
|
query: { _id: idOrQuery }
|
|
198
240
|
};
|
|
199
241
|
await this.app.triggerHook('beforeFind', this.objectName, hookCtx);
|
|
200
|
-
|
|
242
|
+
// Use kernel.get() for direct ID lookup
|
|
243
|
+
const result = await this.getKernel().get(this.objectName, String(idOrQuery));
|
|
201
244
|
// Evaluate formulas if result exists
|
|
202
245
|
const resultWithFormulas = result ? this.evaluateFormulas(result) : result;
|
|
203
246
|
hookCtx.result = resultWithFormulas;
|
|
@@ -220,7 +263,10 @@ class ObjectRepository {
|
|
|
220
263
|
query: filters
|
|
221
264
|
};
|
|
222
265
|
await this.app.triggerHook('beforeCount', this.objectName, hookCtx);
|
|
223
|
-
|
|
266
|
+
// Build QueryAST and execute via kernel to get count
|
|
267
|
+
const ast = this.buildQueryAST(hookCtx.query || {});
|
|
268
|
+
const kernelResult = await this.getKernel().find(this.objectName, ast);
|
|
269
|
+
const result = kernelResult.count;
|
|
224
270
|
hookCtx.result = result;
|
|
225
271
|
await this.app.triggerHook('afterCount', this.objectName, hookCtx);
|
|
226
272
|
return hookCtx.result;
|
|
@@ -243,7 +289,8 @@ class ObjectRepository {
|
|
|
243
289
|
finalDoc.space_id = this.context.spaceId;
|
|
244
290
|
// Validate the record before creating
|
|
245
291
|
await this.validateRecord('create', finalDoc);
|
|
246
|
-
|
|
292
|
+
// Execute via kernel
|
|
293
|
+
const result = await this.getKernel().create(this.objectName, finalDoc);
|
|
247
294
|
hookCtx.result = result;
|
|
248
295
|
await this.app.triggerHook('afterCreate', this.objectName, hookCtx);
|
|
249
296
|
return hookCtx.result;
|
|
@@ -265,7 +312,8 @@ class ObjectRepository {
|
|
|
265
312
|
await this.app.triggerHook('beforeUpdate', this.objectName, hookCtx);
|
|
266
313
|
// Validate the update
|
|
267
314
|
await this.validateRecord('update', hookCtx.data, previousData);
|
|
268
|
-
|
|
315
|
+
// Execute via kernel
|
|
316
|
+
const result = await this.getKernel().update(this.objectName, String(id), hookCtx.data);
|
|
269
317
|
hookCtx.result = result;
|
|
270
318
|
await this.app.triggerHook('afterUpdate', this.objectName, hookCtx);
|
|
271
319
|
return hookCtx.result;
|
|
@@ -283,7 +331,8 @@ class ObjectRepository {
|
|
|
283
331
|
previousData
|
|
284
332
|
};
|
|
285
333
|
await this.app.triggerHook('beforeDelete', this.objectName, hookCtx);
|
|
286
|
-
|
|
334
|
+
// Execute via kernel
|
|
335
|
+
const result = await this.getKernel().delete(this.objectName, String(id));
|
|
287
336
|
hookCtx.result = result;
|
|
288
337
|
await this.app.triggerHook('afterDelete', this.objectName, hookCtx);
|
|
289
338
|
return hookCtx.result;
|
package/dist/repository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectQL
|
|
3
|
+
* Copyright (c) 2026-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
1
8
|
import { ObjectConfig, IntrospectedSchema } from '@objectql/types';
|
|
2
9
|
export declare function toTitleCase(str: string): string;
|
|
3
10
|
/**
|
package/dist/util.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ObjectQL
|
|
4
|
+
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.toTitleCase = toTitleCase;
|
|
4
11
|
exports.convertIntrospectedSchemaToObjects = convertIntrospectedSchemaToObjects;
|
|
@@ -80,20 +87,28 @@ function convertIntrospectedSchemaToObjects(introspectedSchema, options) {
|
|
|
80
87
|
let fieldConfig;
|
|
81
88
|
if (foreignKey) {
|
|
82
89
|
// This is a lookup field
|
|
90
|
+
// Note: name must be set explicitly here since we're creating the config programmatically.
|
|
91
|
+
// When defined in YAML (ObjectConfig.fields Record), the name is auto-populated from the key.
|
|
83
92
|
fieldConfig = {
|
|
93
|
+
name: column.name,
|
|
84
94
|
type: 'lookup',
|
|
85
95
|
reference_to: foreignKey.referencedTable,
|
|
86
96
|
label: toTitleCase(column.name),
|
|
87
|
-
required: !column.nullable
|
|
97
|
+
required: !column.nullable,
|
|
98
|
+
searchable: false
|
|
88
99
|
};
|
|
89
100
|
}
|
|
90
101
|
else {
|
|
91
102
|
// Regular field
|
|
92
103
|
const fieldType = mapDatabaseTypeToFieldType(column.type);
|
|
104
|
+
// Note: name must be set explicitly here since we're creating the config programmatically.
|
|
105
|
+
// When defined in YAML (ObjectConfig.fields Record), the name is auto-populated from the key.
|
|
93
106
|
fieldConfig = {
|
|
107
|
+
name: column.name,
|
|
94
108
|
type: fieldType,
|
|
95
109
|
label: toTitleCase(column.name),
|
|
96
|
-
required: !column.nullable
|
|
110
|
+
required: !column.nullable,
|
|
111
|
+
searchable: false
|
|
97
112
|
};
|
|
98
113
|
// Add unique constraint
|
|
99
114
|
if (column.isUnique) {
|
|
@@ -101,7 +116,7 @@ function convertIntrospectedSchemaToObjects(introspectedSchema, options) {
|
|
|
101
116
|
}
|
|
102
117
|
// Add max length for text fields
|
|
103
118
|
if (column.maxLength && (fieldType === 'text' || fieldType === 'textarea')) {
|
|
104
|
-
fieldConfig.
|
|
119
|
+
fieldConfig.maxLength = column.maxLength;
|
|
105
120
|
}
|
|
106
121
|
// Add default value
|
|
107
122
|
if (column.defaultValue != null) {
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|