@objectql/core 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +42 -0
  3. package/dist/app.d.ts +61 -51
  4. package/dist/app.js +101 -431
  5. package/dist/app.js.map +1 -1
  6. package/dist/index.d.ts +4 -11
  7. package/dist/index.js +13 -9
  8. package/dist/index.js.map +1 -1
  9. package/dist/kernel-factory.d.ts +38 -0
  10. package/dist/kernel-factory.js +38 -0
  11. package/dist/kernel-factory.js.map +1 -0
  12. package/dist/plugin.d.ts +10 -16
  13. package/dist/plugin.js +104 -58
  14. package/dist/plugin.js.map +1 -1
  15. package/dist/repository.d.ts +4 -31
  16. package/dist/repository.js +7 -275
  17. package/dist/repository.js.map +1 -1
  18. package/dist/util.js +4 -2
  19. package/dist/util.js.map +1 -1
  20. package/package.json +19 -11
  21. package/src/app.ts +157 -531
  22. package/src/index.ts +8 -23
  23. package/src/kernel-factory.ts +47 -0
  24. package/src/plugin.ts +116 -94
  25. package/src/repository.ts +4 -313
  26. package/src/util.ts +5 -3
  27. package/test/__mocks__/@objectstack/core.ts +250 -1
  28. package/test/__mocks__/@objectstack/objectql.ts +127 -0
  29. package/test/__mocks__/@objectstack/runtime.ts +14 -5
  30. package/test/introspection.test.ts +1 -1
  31. package/test/mock-driver.ts +5 -5
  32. package/test/optimizations.test.ts +2 -2
  33. package/test/plugin-integration.test.ts +4 -5
  34. package/test/utils.ts +6 -6
  35. package/tsconfig.json +3 -1
  36. package/tsconfig.tsbuildinfo +1 -1
  37. package/dist/gateway.d.ts +0 -36
  38. package/dist/gateway.js +0 -89
  39. package/dist/gateway.js.map +0 -1
  40. package/dist/optimizations/CompiledHookManager.d.ts +0 -55
  41. package/dist/optimizations/CompiledHookManager.js +0 -164
  42. package/dist/optimizations/CompiledHookManager.js.map +0 -1
  43. package/dist/optimizations/DependencyGraph.d.ts +0 -82
  44. package/dist/optimizations/DependencyGraph.js +0 -211
  45. package/dist/optimizations/DependencyGraph.js.map +0 -1
  46. package/dist/optimizations/GlobalConnectionPool.d.ts +0 -89
  47. package/dist/optimizations/GlobalConnectionPool.js +0 -193
  48. package/dist/optimizations/GlobalConnectionPool.js.map +0 -1
  49. package/dist/optimizations/LazyMetadataLoader.d.ts +0 -75
  50. package/dist/optimizations/LazyMetadataLoader.js +0 -149
  51. package/dist/optimizations/LazyMetadataLoader.js.map +0 -1
  52. package/dist/optimizations/OptimizedMetadataRegistry.d.ts +0 -26
  53. package/dist/optimizations/OptimizedMetadataRegistry.js +0 -117
  54. package/dist/optimizations/OptimizedMetadataRegistry.js.map +0 -1
  55. package/dist/optimizations/OptimizedValidationEngine.d.ts +0 -73
  56. package/dist/optimizations/OptimizedValidationEngine.js +0 -141
  57. package/dist/optimizations/OptimizedValidationEngine.js.map +0 -1
  58. package/dist/optimizations/QueryCompiler.d.ts +0 -51
  59. package/dist/optimizations/QueryCompiler.js +0 -216
  60. package/dist/optimizations/QueryCompiler.js.map +0 -1
  61. package/dist/optimizations/SQLQueryOptimizer.d.ts +0 -96
  62. package/dist/optimizations/SQLQueryOptimizer.js +0 -265
  63. package/dist/optimizations/SQLQueryOptimizer.js.map +0 -1
  64. package/dist/optimizations/index.d.ts +0 -32
  65. package/dist/optimizations/index.js +0 -44
  66. package/dist/optimizations/index.js.map +0 -1
  67. package/dist/protocol.d.ts +0 -180
  68. package/dist/protocol.js +0 -260
  69. package/dist/protocol.js.map +0 -1
  70. package/dist/query/filter-translator.d.ts +0 -27
  71. package/dist/query/filter-translator.js +0 -38
  72. package/dist/query/filter-translator.js.map +0 -1
  73. package/dist/query/index.d.ts +0 -22
  74. package/dist/query/index.js +0 -39
  75. package/dist/query/index.js.map +0 -1
  76. package/dist/query/query-analyzer.d.ts +0 -188
  77. package/dist/query/query-analyzer.js +0 -348
  78. package/dist/query/query-analyzer.js.map +0 -1
  79. package/dist/query/query-builder.d.ts +0 -35
  80. package/dist/query/query-builder.js +0 -61
  81. package/dist/query/query-builder.js.map +0 -1
  82. package/dist/query/query-service.d.ts +0 -153
  83. package/dist/query/query-service.js +0 -272
  84. package/dist/query/query-service.js.map +0 -1
  85. package/jest.config.js +0 -29
  86. package/src/gateway.ts +0 -101
  87. package/src/optimizations/CompiledHookManager.ts +0 -185
  88. package/src/optimizations/DependencyGraph.ts +0 -255
  89. package/src/optimizations/GlobalConnectionPool.ts +0 -251
  90. package/src/optimizations/LazyMetadataLoader.ts +0 -180
  91. package/src/optimizations/OptimizedMetadataRegistry.ts +0 -132
  92. package/src/optimizations/OptimizedValidationEngine.ts +0 -172
  93. package/src/optimizations/QueryCompiler.ts +0 -242
  94. package/src/optimizations/SQLQueryOptimizer.ts +0 -329
  95. package/src/optimizations/index.ts +0 -34
  96. package/src/protocol.ts +0 -291
  97. package/src/query/filter-translator.ts +0 -41
  98. package/src/query/index.ts +0 -24
  99. package/src/query/query-analyzer.ts +0 -533
  100. package/src/query/query-builder.ts +0 -64
  101. package/src/query/query-service.ts +0 -398
  102. package/test/app.test.ts +0 -578
  103. package/test/filter-syntax.test.ts +0 -233
  104. package/test/gateway.test.ts +0 -88
  105. package/test/protocol.test.ts +0 -143
  106. package/test/repository-validation.test.ts +0 -351
  107. package/test/repository.test.ts +0 -151
package/dist/protocol.js DELETED
@@ -1,260 +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
- * Get UI View
72
- */
73
- async getUiView(args) {
74
- return null;
75
- }
76
- /**
77
- * Find Data Records
78
- */
79
- async findData(args) {
80
- const { object, query } = args;
81
- // Use direct kernel method if available (preferred)
82
- if (typeof this.engine.find === 'function') {
83
- const result = await this.engine.find(object, query || {});
84
- return result;
85
- }
86
- // Fallback to createContext (if engine is IObjectQL)
87
- if (typeof this.engine.createContext === 'function') {
88
- const ctx = this.engine.createContext({ isSystem: true });
89
- try {
90
- const repo = ctx.object(object);
91
- return await repo.find(query || {});
92
- }
93
- catch (error) {
94
- throw new Error(`Data access failed: ${error.message}`);
95
- }
96
- }
97
- throw new Error('Engine does not support find operation');
98
- }
99
- /**
100
- * Count Data Records
101
- */
102
- async countData(args) {
103
- const { object, query } = args;
104
- // Basic fallback
105
- const result = await this.findData(args);
106
- return Array.isArray(result) ? result.length : (result.value ? result.value.length : 0);
107
- }
108
- /**
109
- * Get Single Data Record
110
- */
111
- async getData(args) {
112
- const { object, id } = args;
113
- if (typeof this.engine.get === 'function') {
114
- return await this.engine.get(object, id);
115
- }
116
- if (typeof this.engine.createContext === 'function') {
117
- const ctx = this.engine.createContext({ isSystem: true });
118
- try {
119
- const repo = ctx.object(object);
120
- return await repo.findOne(id);
121
- }
122
- catch (error) {
123
- throw new Error(`Data retrieval failed: ${error.message}`);
124
- }
125
- }
126
- throw new Error('Engine does not support get operation');
127
- }
128
- /**
129
- * Create Data Record
130
- */
131
- async createData(args) {
132
- const { object, data } = args;
133
- if (typeof this.engine.create === 'function') {
134
- return await this.engine.create(object, data);
135
- }
136
- if (typeof this.engine.createContext === 'function') {
137
- const ctx = this.engine.createContext({ isSystem: true });
138
- try {
139
- const repo = ctx.object(object);
140
- // Protocol expects returned data
141
- return await repo.create(data);
142
- }
143
- catch (error) {
144
- throw new Error(`Data creation failed: ${error.message}`);
145
- }
146
- }
147
- throw new Error('Engine does not support create operation');
148
- }
149
- /**
150
- * Update Data Record
151
- */
152
- async updateData(args) {
153
- const { object, id, data } = args;
154
- if (typeof this.engine.update === 'function') {
155
- return await this.engine.update(object, id, data);
156
- }
157
- if (typeof this.engine.createContext === 'function') {
158
- const ctx = this.engine.createContext({ isSystem: true });
159
- try {
160
- const repo = ctx.object(object);
161
- return await repo.update(id, data);
162
- }
163
- catch (error) {
164
- throw new Error(`Data update failed: ${error.message}`);
165
- }
166
- }
167
- throw new Error('Engine does not support update operation');
168
- }
169
- /**
170
- * Delete Data Record
171
- */
172
- async deleteData(args) {
173
- const { object, id } = args;
174
- if (typeof this.engine.delete === 'function') {
175
- const success = await this.engine.delete(object, id);
176
- return { object, id, success: !!success };
177
- }
178
- if (typeof this.engine.createContext === 'function') {
179
- const ctx = this.engine.createContext({ isSystem: true });
180
- try {
181
- const repo = ctx.object(object);
182
- await repo.delete(id);
183
- return { object, id, success: true };
184
- }
185
- catch (error) {
186
- throw new Error(`Data deletion failed: ${error.message}`);
187
- }
188
- }
189
- throw new Error('Engine does not support delete operation');
190
- }
191
- /**
192
- * Create Many Data Records
193
- */
194
- async createManyData(args) {
195
- throw new Error('createManyData not implemented');
196
- }
197
- /**
198
- * Update Many Data Records
199
- */
200
- async updateManyData(args) {
201
- throw new Error('updateManyData not implemented');
202
- }
203
- /**
204
- * Delete Many Data Records
205
- */
206
- async deleteManyData(args) {
207
- throw new Error('deleteManyData not implemented');
208
- }
209
- /**
210
- * Batch Operations
211
- */
212
- async batchData(args) {
213
- throw new Error('batchData not implemented');
214
- }
215
- /**
216
- * Execute Action/Operation
217
- */
218
- async performAction(args) {
219
- // Not implemented in this shim yet
220
- throw new Error('Action execution not implemented in protocol shim');
221
- }
222
- /**
223
- * Analytics Query - Execute analytics query
224
- */
225
- async analyticsQuery(args) {
226
- throw new Error('analyticsQuery not implemented');
227
- }
228
- /**
229
- * Get Analytics Metadata
230
- */
231
- async getAnalyticsMeta(args) {
232
- throw new Error('getAnalyticsMeta not implemented');
233
- }
234
- /**
235
- * Trigger Automation
236
- */
237
- async triggerAutomation(args) {
238
- throw new Error('triggerAutomation not implemented');
239
- }
240
- /**
241
- * List Spaces (Hub/Workspace Management)
242
- */
243
- async listSpaces(args) {
244
- throw new Error('listSpaces not implemented');
245
- }
246
- /**
247
- * Create Space (Hub/Workspace Management)
248
- */
249
- async createSpace(args) {
250
- throw new Error('createSpace not implemented');
251
- }
252
- /**
253
- * Install Plugin (Hub/Extension Management)
254
- */
255
- async installPlugin(args) {
256
- throw new Error('installPlugin not implemented');
257
- }
258
- }
259
- exports.ObjectStackProtocolImplementation = ObjectStackProtocolImplementation;
260
- //# sourceMappingURL=protocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,27 +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
- import { Data } from '@objectstack/spec';
10
- type FilterCondition = Data.FilterCondition;
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
- export declare class FilterTranslator {
22
- /**
23
- * Translate filters from ObjectQL format to ObjectStack FilterCondition format
24
- */
25
- translate(filters?: Filter): FilterCondition | undefined;
26
- }
27
- export {};
@@ -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,OAAqC,CAAC;IACjD,CAAC;CACJ;AAjBD,4CAiBC"}
@@ -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';
@@ -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
@@ -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,188 +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 { Data } from '@objectstack/spec';
10
- type QueryAST = Data.QueryAST;
11
- import { QueryService, QueryOptions } from './query-service';
12
- /**
13
- * Query execution plan
14
- */
15
- export interface QueryPlan {
16
- /**
17
- * The compiled QueryAST
18
- */
19
- ast: QueryAST;
20
- /**
21
- * Estimated number of rows to be scanned
22
- */
23
- estimatedRows?: number;
24
- /**
25
- * Indexes that could be used for this query
26
- */
27
- indexes: string[];
28
- /**
29
- * Warnings about potential performance issues
30
- */
31
- warnings: string[];
32
- /**
33
- * Suggestions for optimization
34
- */
35
- suggestions: string[];
36
- /**
37
- * Complexity score (0-100, higher is more complex)
38
- */
39
- complexity: number;
40
- }
41
- /**
42
- * Query profile result with execution statistics
43
- */
44
- export interface ProfileResult {
45
- /**
46
- * Execution time in milliseconds
47
- */
48
- executionTime: number;
49
- /**
50
- * Number of rows scanned by the database
51
- */
52
- rowsScanned: number;
53
- /**
54
- * Number of rows returned
55
- */
56
- rowsReturned: number;
57
- /**
58
- * Whether an index was used
59
- */
60
- indexUsed: boolean;
61
- /**
62
- * The query plan
63
- */
64
- plan: QueryPlan;
65
- /**
66
- * Efficiency ratio (rowsReturned / rowsScanned)
67
- * Higher is better (1.0 is perfect, 0.0 is worst)
68
- */
69
- efficiency: number;
70
- }
71
- /**
72
- * Aggregated query statistics
73
- */
74
- export interface QueryStats {
75
- /**
76
- * Total number of queries executed
77
- */
78
- totalQueries: number;
79
- /**
80
- * Average execution time in milliseconds
81
- */
82
- avgExecutionTime: number;
83
- /**
84
- * Slowest query execution time
85
- */
86
- slowestQuery: number;
87
- /**
88
- * Fastest query execution time
89
- */
90
- fastestQuery: number;
91
- /**
92
- * Queries by object
93
- */
94
- byObject: Record<string, {
95
- count: number;
96
- avgTime: number;
97
- }>;
98
- /**
99
- * Top slow queries
100
- */
101
- slowQueries: Array<{
102
- objectName: string;
103
- executionTime: number;
104
- query: UnifiedQuery;
105
- timestamp: Date;
106
- }>;
107
- }
108
- /**
109
- * Query Analyzer
110
- *
111
- * Provides query performance analysis and profiling capabilities.
112
- * This class helps developers optimize queries by:
113
- * - Analyzing query plans
114
- * - Profiling execution performance
115
- * - Tracking statistics
116
- * - Providing optimization suggestions
117
- */
118
- export declare class QueryAnalyzer {
119
- private queryService;
120
- private metadata;
121
- private stats;
122
- private executionTimes;
123
- private readonly MAX_SLOW_QUERIES;
124
- constructor(queryService: QueryService, metadata: MetadataRegistry);
125
- /**
126
- * Analyze a query and generate an execution plan
127
- *
128
- * @param objectName - The object to query
129
- * @param query - The unified query
130
- * @returns Query plan with optimization suggestions
131
- */
132
- explain(objectName: string, query: UnifiedQuery): Promise<QueryPlan>;
133
- /**
134
- * Profile a query execution
135
- *
136
- * @param objectName - The object to query
137
- * @param query - The unified query
138
- * @param options - Query execution options
139
- * @returns Profile result with execution statistics
140
- */
141
- profile(objectName: string, query: UnifiedQuery, options?: QueryOptions): Promise<ProfileResult>;
142
- /**
143
- * Get aggregated query statistics
144
- *
145
- * @returns Current query statistics
146
- */
147
- getStatistics(): QueryStats;
148
- /**
149
- * Reset statistics
150
- */
151
- resetStatistics(): void;
152
- /**
153
- * Get schema for an object
154
- * @private
155
- */
156
- private getSchema;
157
- /**
158
- * Find indexes that could be used for the query
159
- * @private
160
- */
161
- private findApplicableIndexes;
162
- /**
163
- * Analyze query for potential issues
164
- * @private
165
- */
166
- private analyzeWarnings;
167
- /**
168
- * Generate optimization suggestions
169
- * @private
170
- */
171
- private generateSuggestions;
172
- /**
173
- * Calculate query complexity score (0-100)
174
- * @private
175
- */
176
- private calculateComplexity;
177
- /**
178
- * Estimate number of rows (very rough heuristic)
179
- * @private
180
- */
181
- private estimateRows;
182
- /**
183
- * Record a query execution for statistics
184
- * @private
185
- */
186
- private recordExecution;
187
- }
188
- export {};