@objectql/core 4.2.0 → 4.2.2
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +34 -0
- package/README.md +5 -2
- package/dist/app.d.ts +61 -52
- package/dist/app.js +100 -435
- package/dist/app.js.map +1 -1
- package/dist/index.d.ts +14 -20
- package/dist/index.js +21 -20
- package/dist/index.js.map +1 -1
- package/dist/kernel-factory.d.ts +38 -0
- package/dist/kernel-factory.js +38 -0
- package/dist/kernel-factory.js.map +1 -0
- package/dist/plugin.d.ts +9 -16
- package/dist/plugin.js +71 -48
- package/dist/plugin.js.map +1 -1
- package/dist/repository.d.ts +4 -31
- package/dist/repository.js +7 -283
- package/dist/repository.js.map +1 -1
- package/dist/util.js +4 -2
- package/dist/util.js.map +1 -1
- package/package.json +14 -12
- package/src/app.ts +156 -539
- package/src/index.ts +18 -42
- package/src/kernel-factory.ts +47 -0
- package/src/plugin.ts +77 -85
- package/src/repository.ts +4 -320
- package/src/util.ts +5 -3
- package/test/__mocks__/@objectstack/core.ts +250 -1
- package/test/__mocks__/@objectstack/objectql.ts +273 -0
- package/test/__mocks__/@objectstack/runtime.ts +14 -5
- package/test/introspection.test.ts +1 -1
- package/test/mock-driver.ts +5 -5
- package/test/optimizations.test.ts +2 -2
- package/test/plugin-integration.test.ts +1 -3
- package/test/utils.ts +6 -6
- package/tsconfig.json +3 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/ai/index.d.ts +0 -8
- package/dist/ai/index.js +0 -25
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/registry.d.ts +0 -23
- package/dist/ai/registry.js +0 -78
- package/dist/ai/registry.js.map +0 -1
- package/dist/gateway.d.ts +0 -37
- package/dist/gateway.js +0 -93
- package/dist/gateway.js.map +0 -1
- package/dist/optimizations/CompiledHookManager.d.ts +0 -56
- package/dist/optimizations/CompiledHookManager.js +0 -170
- package/dist/optimizations/CompiledHookManager.js.map +0 -1
- package/dist/optimizations/DependencyGraph.d.ts +0 -82
- package/dist/optimizations/DependencyGraph.js +0 -211
- package/dist/optimizations/DependencyGraph.js.map +0 -1
- package/dist/optimizations/GlobalConnectionPool.d.ts +0 -89
- package/dist/optimizations/GlobalConnectionPool.js +0 -193
- package/dist/optimizations/GlobalConnectionPool.js.map +0 -1
- package/dist/optimizations/LazyMetadataLoader.d.ts +0 -75
- package/dist/optimizations/LazyMetadataLoader.js +0 -149
- package/dist/optimizations/LazyMetadataLoader.js.map +0 -1
- package/dist/optimizations/OptimizedMetadataRegistry.d.ts +0 -26
- package/dist/optimizations/OptimizedMetadataRegistry.js +0 -117
- package/dist/optimizations/OptimizedMetadataRegistry.js.map +0 -1
- package/dist/optimizations/OptimizedValidationEngine.d.ts +0 -73
- package/dist/optimizations/OptimizedValidationEngine.js +0 -141
- package/dist/optimizations/OptimizedValidationEngine.js.map +0 -1
- package/dist/optimizations/QueryCompiler.d.ts +0 -51
- package/dist/optimizations/QueryCompiler.js +0 -216
- package/dist/optimizations/QueryCompiler.js.map +0 -1
- package/dist/optimizations/SQLQueryOptimizer.d.ts +0 -96
- package/dist/optimizations/SQLQueryOptimizer.js +0 -265
- package/dist/optimizations/SQLQueryOptimizer.js.map +0 -1
- package/dist/optimizations/index.d.ts +0 -32
- package/dist/optimizations/index.js +0 -44
- package/dist/optimizations/index.js.map +0 -1
- package/dist/protocol.d.ts +0 -191
- package/dist/protocol.js +0 -272
- package/dist/protocol.js.map +0 -1
- package/dist/query/filter-translator.d.ts +0 -24
- package/dist/query/filter-translator.js +0 -38
- package/dist/query/filter-translator.js.map +0 -1
- package/dist/query/index.d.ts +0 -22
- package/dist/query/index.js +0 -39
- package/dist/query/index.js.map +0 -1
- package/dist/query/query-analyzer.d.ts +0 -186
- package/dist/query/query-analyzer.js +0 -348
- package/dist/query/query-analyzer.js.map +0 -1
- package/dist/query/query-builder.d.ts +0 -27
- package/dist/query/query-builder.js +0 -69
- package/dist/query/query-builder.js.map +0 -1
- package/dist/query/query-service.d.ts +0 -151
- package/dist/query/query-service.js +0 -272
- package/dist/query/query-service.js.map +0 -1
- package/src/ai/index.ts +0 -9
- package/src/ai/registry.ts +0 -81
- package/src/gateway.ts +0 -105
- package/src/optimizations/CompiledHookManager.ts +0 -193
- package/src/optimizations/DependencyGraph.ts +0 -255
- package/src/optimizations/GlobalConnectionPool.ts +0 -251
- package/src/optimizations/LazyMetadataLoader.ts +0 -180
- package/src/optimizations/OptimizedMetadataRegistry.ts +0 -132
- package/src/optimizations/OptimizedValidationEngine.ts +0 -172
- package/src/optimizations/QueryCompiler.ts +0 -242
- package/src/optimizations/SQLQueryOptimizer.ts +0 -329
- package/src/optimizations/index.ts +0 -34
- package/src/protocol.ts +0 -304
- package/src/query/filter-translator.ts +0 -41
- package/src/query/index.ts +0 -24
- package/src/query/query-analyzer.ts +0 -532
- package/src/query/query-builder.ts +0 -64
- package/src/query/query-service.ts +0 -397
- package/test/ai-registry.test.ts +0 -42
- package/test/app.test.ts +0 -578
- package/test/filter-syntax.test.ts +0 -233
- package/test/gateway.test.ts +0 -88
- package/test/protocol.test.ts +0 -143
- package/test/repository-validation.test.ts +0 -351
- package/test/repository.test.ts +0 -151
package/dist/protocol.js
DELETED
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ObjectStack Protocol Implementation
|
|
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.ObjectStackProtocolImplementation = void 0;
|
|
11
|
-
/**
|
|
12
|
-
* Bridges the ObjectStack Protocol (Specification) to the ObjectQL Engine (Implementation)
|
|
13
|
-
*/
|
|
14
|
-
class ObjectStackProtocolImplementation {
|
|
15
|
-
constructor(engine) {
|
|
16
|
-
this.engine = engine;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Get API Discovery Document
|
|
20
|
-
*/
|
|
21
|
-
async getDiscovery(args) {
|
|
22
|
-
return {
|
|
23
|
-
name: 'ObjectQL Engine',
|
|
24
|
-
version: '4.0.0',
|
|
25
|
-
protocols: ['rest', 'graphql', 'json-rpc', 'odata'],
|
|
26
|
-
auth: {
|
|
27
|
-
type: 'bearer',
|
|
28
|
-
url: '/auth/token'
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Get Metadata Types (e.g., ['object', 'action'])
|
|
34
|
-
*/
|
|
35
|
-
async getMetaTypes(args) {
|
|
36
|
-
let types = ['object'];
|
|
37
|
-
if (this.engine.metadata && typeof this.engine.metadata.getTypes === 'function') {
|
|
38
|
-
types = this.engine.metadata.getTypes();
|
|
39
|
-
}
|
|
40
|
-
return { types };
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Get Metadata Items for a Type
|
|
44
|
-
*/
|
|
45
|
-
async getMetaItems(args) {
|
|
46
|
-
const { type } = args;
|
|
47
|
-
let items = [];
|
|
48
|
-
if (this.engine.metadata && typeof this.engine.metadata.list === 'function') {
|
|
49
|
-
items = this.engine.metadata.list(type);
|
|
50
|
-
}
|
|
51
|
-
return { type, items };
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get Metadata Item
|
|
55
|
-
*/
|
|
56
|
-
async getMetaItem(args) {
|
|
57
|
-
const { type, name } = args;
|
|
58
|
-
if (this.engine.metadata && typeof this.engine.metadata.get === 'function') {
|
|
59
|
-
return this.engine.metadata.get(type, name);
|
|
60
|
-
}
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Get Cached Metadata Item
|
|
65
|
-
*/
|
|
66
|
-
async getMetaItemCached(args) {
|
|
67
|
-
// Fallback to non-cached version for now
|
|
68
|
-
return this.getMetaItem(args);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Save Metadata Item
|
|
72
|
-
*/
|
|
73
|
-
async saveMetaItem(args) {
|
|
74
|
-
const { type, name, item } = args;
|
|
75
|
-
if (this.engine.metadata && typeof this.engine.metadata.register === 'function') {
|
|
76
|
-
const data = { ...(item || {}), name }; // Ensure name is in data
|
|
77
|
-
this.engine.metadata.register(type, data);
|
|
78
|
-
return { success: true };
|
|
79
|
-
}
|
|
80
|
-
throw new Error('Engine does not support saving metadata');
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get UI View
|
|
84
|
-
*/
|
|
85
|
-
async getUiView(args) {
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Find Data Records
|
|
90
|
-
*/
|
|
91
|
-
async findData(args) {
|
|
92
|
-
const { object, query } = args;
|
|
93
|
-
// Use direct kernel method if available (preferred)
|
|
94
|
-
if (typeof this.engine.find === 'function') {
|
|
95
|
-
const result = await this.engine.find(object, query || {});
|
|
96
|
-
return result;
|
|
97
|
-
}
|
|
98
|
-
// Fallback to createContext (if engine is IObjectQL)
|
|
99
|
-
if (typeof this.engine.createContext === 'function') {
|
|
100
|
-
const ctx = this.engine.createContext({ isSystem: true });
|
|
101
|
-
try {
|
|
102
|
-
const repo = ctx.object(object);
|
|
103
|
-
return await repo.find(query || {});
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
throw new Error(`Data access failed: ${error.message}`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
throw new Error('Engine does not support find operation');
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Count Data Records
|
|
113
|
-
*/
|
|
114
|
-
async countData(args) {
|
|
115
|
-
const { object, query } = args;
|
|
116
|
-
// Basic fallback
|
|
117
|
-
const result = await this.findData(args);
|
|
118
|
-
return Array.isArray(result) ? result.length : (result.value ? result.value.length : 0);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Get Single Data Record
|
|
122
|
-
*/
|
|
123
|
-
async getData(args) {
|
|
124
|
-
const { object, id } = args;
|
|
125
|
-
if (typeof this.engine.get === 'function') {
|
|
126
|
-
return await this.engine.get(object, id);
|
|
127
|
-
}
|
|
128
|
-
if (typeof this.engine.createContext === 'function') {
|
|
129
|
-
const ctx = this.engine.createContext({ isSystem: true });
|
|
130
|
-
try {
|
|
131
|
-
const repo = ctx.object(object);
|
|
132
|
-
return await repo.findOne(id);
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
throw new Error(`Data retrieval failed: ${error.message}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
throw new Error('Engine does not support get operation');
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Create Data Record
|
|
142
|
-
*/
|
|
143
|
-
async createData(args) {
|
|
144
|
-
const { object, data } = args;
|
|
145
|
-
if (typeof this.engine.create === 'function') {
|
|
146
|
-
return await this.engine.create(object, data);
|
|
147
|
-
}
|
|
148
|
-
if (typeof this.engine.createContext === 'function') {
|
|
149
|
-
const ctx = this.engine.createContext({ isSystem: true });
|
|
150
|
-
try {
|
|
151
|
-
const repo = ctx.object(object);
|
|
152
|
-
// Protocol expects returned data
|
|
153
|
-
return await repo.create(data);
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
throw new Error(`Data creation failed: ${error.message}`);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
throw new Error('Engine does not support create operation');
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Update Data Record
|
|
163
|
-
*/
|
|
164
|
-
async updateData(args) {
|
|
165
|
-
const { object, id, data } = args;
|
|
166
|
-
if (typeof this.engine.update === 'function') {
|
|
167
|
-
return await this.engine.update(object, id, data);
|
|
168
|
-
}
|
|
169
|
-
if (typeof this.engine.createContext === 'function') {
|
|
170
|
-
const ctx = this.engine.createContext({ isSystem: true });
|
|
171
|
-
try {
|
|
172
|
-
const repo = ctx.object(object);
|
|
173
|
-
return await repo.update(id, data);
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
throw new Error(`Data update failed: ${error.message}`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
throw new Error('Engine does not support update operation');
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Delete Data Record
|
|
183
|
-
*/
|
|
184
|
-
async deleteData(args) {
|
|
185
|
-
const { object, id } = args;
|
|
186
|
-
if (typeof this.engine.delete === 'function') {
|
|
187
|
-
const success = await this.engine.delete(object, id);
|
|
188
|
-
return { object, id, success: !!success };
|
|
189
|
-
}
|
|
190
|
-
if (typeof this.engine.createContext === 'function') {
|
|
191
|
-
const ctx = this.engine.createContext({ isSystem: true });
|
|
192
|
-
try {
|
|
193
|
-
const repo = ctx.object(object);
|
|
194
|
-
await repo.delete(id);
|
|
195
|
-
return { object, id, success: true };
|
|
196
|
-
}
|
|
197
|
-
catch (error) {
|
|
198
|
-
throw new Error(`Data deletion failed: ${error.message}`);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
throw new Error('Engine does not support delete operation');
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Create Many Data Records
|
|
205
|
-
*/
|
|
206
|
-
async createManyData(args) {
|
|
207
|
-
throw new Error('createManyData not implemented');
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Update Many Data Records
|
|
211
|
-
*/
|
|
212
|
-
async updateManyData(args) {
|
|
213
|
-
throw new Error('updateManyData not implemented');
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Delete Many Data Records
|
|
217
|
-
*/
|
|
218
|
-
async deleteManyData(args) {
|
|
219
|
-
throw new Error('deleteManyData not implemented');
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Batch Operations
|
|
223
|
-
*/
|
|
224
|
-
async batchData(args) {
|
|
225
|
-
throw new Error('batchData not implemented');
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Execute Action/Operation
|
|
229
|
-
*/
|
|
230
|
-
async performAction(args) {
|
|
231
|
-
// Not implemented in this shim yet
|
|
232
|
-
throw new Error('Action execution not implemented in protocol shim');
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Analytics Query - Execute analytics query
|
|
236
|
-
*/
|
|
237
|
-
async analyticsQuery(args) {
|
|
238
|
-
throw new Error('analyticsQuery not implemented');
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Get Analytics Metadata
|
|
242
|
-
*/
|
|
243
|
-
async getAnalyticsMeta(args) {
|
|
244
|
-
throw new Error('getAnalyticsMeta not implemented');
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Trigger Automation
|
|
248
|
-
*/
|
|
249
|
-
async triggerAutomation(args) {
|
|
250
|
-
throw new Error('triggerAutomation not implemented');
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* List Spaces (Hub/Workspace Management)
|
|
254
|
-
*/
|
|
255
|
-
async listSpaces(args) {
|
|
256
|
-
throw new Error('listSpaces not implemented');
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Create Space (Hub/Workspace Management)
|
|
260
|
-
*/
|
|
261
|
-
async createSpace(args) {
|
|
262
|
-
throw new Error('createSpace not implemented');
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Install Plugin (Hub/Extension Management)
|
|
266
|
-
*/
|
|
267
|
-
async installPlugin(args) {
|
|
268
|
-
throw new Error('installPlugin not implemented');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
exports.ObjectStackProtocolImplementation = ObjectStackProtocolImplementation;
|
|
272
|
-
//# sourceMappingURL=protocol.js.map
|
package/dist/protocol.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAKH;;GAEG;AACH,MAAa,iCAAiC;IAC1C,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAEzC;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAS;QACxB,OAAO;YACH,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;YACnD,IAAI,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,aAAa;aACrB;SACJ,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAS;QACxB,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC9E,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAsB;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,IAAI,KAAK,GAAU,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1E,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAoC;QAClD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAoC;QACxD,yCAAyC;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAgD;QAC/D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC9E,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAyB;YACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAA+C;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAqC;QAChD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE/B,oDAAoD;QACpD,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,qDAAqD;QACrD,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAqC;QACjD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC/B,iBAAiB;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAGD;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAoC;QAC9C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO,MAAO,IAAI,CAAC,MAAc,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAmC;QAChD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAE9B,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACpD,OAAO,MAAO,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,iCAAiC;gBACjC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAA+C;QAC5D,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAElC,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACpD,OAAO,MAAO,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAoC;QACjD,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,MAAO,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,OAAQ,IAAI,CAAC,MAAc,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAuD;QACxE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAA6E;QAC9F,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAsD;QACtE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAA2G;QACvH,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAiE;QACjF,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAS;QAC1B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAS;QAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAuD;QAC3E,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAS;QACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAS;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAS;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;CACJ;AAjSD,8EAiSC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
-
*/
|
|
8
|
-
import type { Filter } from '@objectql/types';
|
|
9
|
-
/**
|
|
10
|
-
* Filter Translator
|
|
11
|
-
*
|
|
12
|
-
* Translates ObjectQL Filter to ObjectStack FilterCondition format.
|
|
13
|
-
* Since both now use the same format, this is mostly a pass-through.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* Input: { age: { $gte: 18 }, $or: [{ status: "active" }, { role: "admin" }] }
|
|
17
|
-
* Output: { age: { $gte: 18 }, $or: [{ status: "active" }, { role: "admin" }] }
|
|
18
|
-
*/
|
|
19
|
-
export declare class FilterTranslator {
|
|
20
|
-
/**
|
|
21
|
-
* Translate filters from ObjectQL format to ObjectStack FilterCondition format
|
|
22
|
-
*/
|
|
23
|
-
translate(filters?: Filter): Filter | undefined;
|
|
24
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.FilterTranslator = void 0;
|
|
11
|
-
/**
|
|
12
|
-
* Filter Translator
|
|
13
|
-
*
|
|
14
|
-
* Translates ObjectQL Filter to ObjectStack FilterCondition format.
|
|
15
|
-
* Since both now use the same format, this is mostly a pass-through.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* Input: { age: { $gte: 18 }, $or: [{ status: "active" }, { role: "admin" }] }
|
|
19
|
-
* Output: { age: { $gte: 18 }, $or: [{ status: "active" }, { role: "admin" }] }
|
|
20
|
-
*/
|
|
21
|
-
class FilterTranslator {
|
|
22
|
-
/**
|
|
23
|
-
* Translate filters from ObjectQL format to ObjectStack FilterCondition format
|
|
24
|
-
*/
|
|
25
|
-
translate(filters) {
|
|
26
|
-
if (!filters) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
// If it's an empty object, return undefined
|
|
30
|
-
if (typeof filters === 'object' && Object.keys(filters).length === 0) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
// Both ObjectQL Filter and ObjectStack FilterCondition use the same format now
|
|
34
|
-
return filters;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
exports.FilterTranslator = FilterTranslator;
|
|
38
|
-
//# sourceMappingURL=filter-translator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter-translator.js","sourceRoot":"","sources":["../../src/query/filter-translator.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAOH;;;;;;;;;GASG;AACH,MAAa,gBAAgB;IACzB;;OAEG;IACH,SAAS,CAAC,OAAgB;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,+EAA+E;QAC/E,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAjBD,4CAiBC"}
|
package/dist/query/index.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
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
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Query Module
|
|
10
|
-
*
|
|
11
|
-
* This module contains ObjectQL's query-specific functionality:
|
|
12
|
-
* - FilterTranslator: Converts ObjectQL filters to ObjectStack FilterNode
|
|
13
|
-
* - QueryBuilder: Builds ObjectStack QueryAST from ObjectQL UnifiedQuery
|
|
14
|
-
* - QueryService: Executes queries via drivers with profiling support
|
|
15
|
-
* - QueryAnalyzer: Provides query performance analysis and optimization suggestions
|
|
16
|
-
*
|
|
17
|
-
* These are the core components that differentiate ObjectQL from generic runtime systems.
|
|
18
|
-
*/
|
|
19
|
-
export * from './filter-translator';
|
|
20
|
-
export * from './query-builder';
|
|
21
|
-
export * from './query-service';
|
|
22
|
-
export * from './query-analyzer';
|
package/dist/query/index.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
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
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
/**
|
|
25
|
-
* Query Module
|
|
26
|
-
*
|
|
27
|
-
* This module contains ObjectQL's query-specific functionality:
|
|
28
|
-
* - FilterTranslator: Converts ObjectQL filters to ObjectStack FilterNode
|
|
29
|
-
* - QueryBuilder: Builds ObjectStack QueryAST from ObjectQL UnifiedQuery
|
|
30
|
-
* - QueryService: Executes queries via drivers with profiling support
|
|
31
|
-
* - QueryAnalyzer: Provides query performance analysis and optimization suggestions
|
|
32
|
-
*
|
|
33
|
-
* These are the core components that differentiate ObjectQL from generic runtime systems.
|
|
34
|
-
*/
|
|
35
|
-
__exportStar(require("./filter-translator"), exports);
|
|
36
|
-
__exportStar(require("./query-builder"), exports);
|
|
37
|
-
__exportStar(require("./query-service"), exports);
|
|
38
|
-
__exportStar(require("./query-analyzer"), exports);
|
|
39
|
-
//# sourceMappingURL=index.js.map
|
package/dist/query/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;AAEH;;;;;;;;;;GAUG;AAEH,sDAAoC;AACpC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ObjectQL Query Analyzer
|
|
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
|
-
*/
|
|
8
|
-
import type { UnifiedQuery, MetadataRegistry } from '@objectql/types';
|
|
9
|
-
import { QueryAST } from '@objectql/types';
|
|
10
|
-
import { QueryService, QueryOptions } from './query-service';
|
|
11
|
-
/**
|
|
12
|
-
* Query execution plan
|
|
13
|
-
*/
|
|
14
|
-
export interface QueryPlan {
|
|
15
|
-
/**
|
|
16
|
-
* The compiled QueryAST
|
|
17
|
-
*/
|
|
18
|
-
ast: QueryAST;
|
|
19
|
-
/**
|
|
20
|
-
* Estimated number of rows to be scanned
|
|
21
|
-
*/
|
|
22
|
-
estimatedRows?: number;
|
|
23
|
-
/**
|
|
24
|
-
* Indexes that could be used for this query
|
|
25
|
-
*/
|
|
26
|
-
indexes: string[];
|
|
27
|
-
/**
|
|
28
|
-
* Warnings about potential performance issues
|
|
29
|
-
*/
|
|
30
|
-
warnings: string[];
|
|
31
|
-
/**
|
|
32
|
-
* Suggestions for optimization
|
|
33
|
-
*/
|
|
34
|
-
suggestions: string[];
|
|
35
|
-
/**
|
|
36
|
-
* Complexity score (0-100, higher is more complex)
|
|
37
|
-
*/
|
|
38
|
-
complexity: number;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Query profile result with execution statistics
|
|
42
|
-
*/
|
|
43
|
-
export interface ProfileResult {
|
|
44
|
-
/**
|
|
45
|
-
* Execution time in milliseconds
|
|
46
|
-
*/
|
|
47
|
-
executionTime: number;
|
|
48
|
-
/**
|
|
49
|
-
* Number of rows scanned by the database
|
|
50
|
-
*/
|
|
51
|
-
rowsScanned: number;
|
|
52
|
-
/**
|
|
53
|
-
* Number of rows returned
|
|
54
|
-
*/
|
|
55
|
-
rowsReturned: number;
|
|
56
|
-
/**
|
|
57
|
-
* Whether an index was used
|
|
58
|
-
*/
|
|
59
|
-
indexUsed: boolean;
|
|
60
|
-
/**
|
|
61
|
-
* The query plan
|
|
62
|
-
*/
|
|
63
|
-
plan: QueryPlan;
|
|
64
|
-
/**
|
|
65
|
-
* Efficiency ratio (rowsReturned / rowsScanned)
|
|
66
|
-
* Higher is better (1.0 is perfect, 0.0 is worst)
|
|
67
|
-
*/
|
|
68
|
-
efficiency: number;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Aggregated query statistics
|
|
72
|
-
*/
|
|
73
|
-
export interface QueryStats {
|
|
74
|
-
/**
|
|
75
|
-
* Total number of queries executed
|
|
76
|
-
*/
|
|
77
|
-
totalQueries: number;
|
|
78
|
-
/**
|
|
79
|
-
* Average execution time in milliseconds
|
|
80
|
-
*/
|
|
81
|
-
avgExecutionTime: number;
|
|
82
|
-
/**
|
|
83
|
-
* Slowest query execution time
|
|
84
|
-
*/
|
|
85
|
-
slowestQuery: number;
|
|
86
|
-
/**
|
|
87
|
-
* Fastest query execution time
|
|
88
|
-
*/
|
|
89
|
-
fastestQuery: number;
|
|
90
|
-
/**
|
|
91
|
-
* Queries by object
|
|
92
|
-
*/
|
|
93
|
-
byObject: Record<string, {
|
|
94
|
-
count: number;
|
|
95
|
-
avgTime: number;
|
|
96
|
-
}>;
|
|
97
|
-
/**
|
|
98
|
-
* Top slow queries
|
|
99
|
-
*/
|
|
100
|
-
slowQueries: Array<{
|
|
101
|
-
objectName: string;
|
|
102
|
-
executionTime: number;
|
|
103
|
-
query: UnifiedQuery;
|
|
104
|
-
timestamp: Date;
|
|
105
|
-
}>;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Query Analyzer
|
|
109
|
-
*
|
|
110
|
-
* Provides query performance analysis and profiling capabilities.
|
|
111
|
-
* This class helps developers optimize queries by:
|
|
112
|
-
* - Analyzing query plans
|
|
113
|
-
* - Profiling execution performance
|
|
114
|
-
* - Tracking statistics
|
|
115
|
-
* - Providing optimization suggestions
|
|
116
|
-
*/
|
|
117
|
-
export declare class QueryAnalyzer {
|
|
118
|
-
private queryService;
|
|
119
|
-
private metadata;
|
|
120
|
-
private stats;
|
|
121
|
-
private executionTimes;
|
|
122
|
-
private readonly MAX_SLOW_QUERIES;
|
|
123
|
-
constructor(queryService: QueryService, metadata: MetadataRegistry);
|
|
124
|
-
/**
|
|
125
|
-
* Analyze a query and generate an execution plan
|
|
126
|
-
*
|
|
127
|
-
* @param objectName - The object to query
|
|
128
|
-
* @param query - The unified query
|
|
129
|
-
* @returns Query plan with optimization suggestions
|
|
130
|
-
*/
|
|
131
|
-
explain(objectName: string, query: UnifiedQuery): Promise<QueryPlan>;
|
|
132
|
-
/**
|
|
133
|
-
* Profile a query execution
|
|
134
|
-
*
|
|
135
|
-
* @param objectName - The object to query
|
|
136
|
-
* @param query - The unified query
|
|
137
|
-
* @param options - Query execution options
|
|
138
|
-
* @returns Profile result with execution statistics
|
|
139
|
-
*/
|
|
140
|
-
profile(objectName: string, query: UnifiedQuery, options?: QueryOptions): Promise<ProfileResult>;
|
|
141
|
-
/**
|
|
142
|
-
* Get aggregated query statistics
|
|
143
|
-
*
|
|
144
|
-
* @returns Current query statistics
|
|
145
|
-
*/
|
|
146
|
-
getStatistics(): QueryStats;
|
|
147
|
-
/**
|
|
148
|
-
* Reset statistics
|
|
149
|
-
*/
|
|
150
|
-
resetStatistics(): void;
|
|
151
|
-
/**
|
|
152
|
-
* Get schema for an object
|
|
153
|
-
* @private
|
|
154
|
-
*/
|
|
155
|
-
private getSchema;
|
|
156
|
-
/**
|
|
157
|
-
* Find indexes that could be used for the query
|
|
158
|
-
* @private
|
|
159
|
-
*/
|
|
160
|
-
private findApplicableIndexes;
|
|
161
|
-
/**
|
|
162
|
-
* Analyze query for potential issues
|
|
163
|
-
* @private
|
|
164
|
-
*/
|
|
165
|
-
private analyzeWarnings;
|
|
166
|
-
/**
|
|
167
|
-
* Generate optimization suggestions
|
|
168
|
-
* @private
|
|
169
|
-
*/
|
|
170
|
-
private generateSuggestions;
|
|
171
|
-
/**
|
|
172
|
-
* Calculate query complexity score (0-100)
|
|
173
|
-
* @private
|
|
174
|
-
*/
|
|
175
|
-
private calculateComplexity;
|
|
176
|
-
/**
|
|
177
|
-
* Estimate number of rows (very rough heuristic)
|
|
178
|
-
* @private
|
|
179
|
-
*/
|
|
180
|
-
private estimateRows;
|
|
181
|
-
/**
|
|
182
|
-
* Record a query execution for statistics
|
|
183
|
-
* @private
|
|
184
|
-
*/
|
|
185
|
-
private recordExecution;
|
|
186
|
-
}
|