@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
@@ -1,265 +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.SQLQueryOptimizer = void 0;
11
- /**
12
- * SQL Query Optimizer
13
- *
14
- * Improvement: SQL-aware optimization with index hints and join reordering.
15
- * Analyzes query patterns and schema to generate optimal SQL.
16
- *
17
- * Expected: 2-5x faster queries on large datasets
18
- */
19
- class SQLQueryOptimizer {
20
- constructor() {
21
- this.schemas = new Map();
22
- }
23
- /**
24
- * Register a schema with index information
25
- */
26
- registerSchema(schema) {
27
- this.schemas.set(schema.name, schema);
28
- }
29
- /**
30
- * Check if a field has an index
31
- */
32
- hasIndex(objectName, fieldName) {
33
- const schema = this.schemas.get(objectName);
34
- if (!schema || !schema.indexes)
35
- return false;
36
- return schema.indexes.some(index => index.fields.includes(fieldName));
37
- }
38
- /**
39
- * Get the best index for given filter fields
40
- */
41
- getBestIndex(objectName, filterFields) {
42
- const schema = this.schemas.get(objectName);
43
- if (!schema || !schema.indexes)
44
- return null;
45
- // Find indexes that cover the filter fields
46
- const candidateIndexes = schema.indexes.filter(index => {
47
- // Check if index covers any of the filter fields
48
- return filterFields.some(field => index.fields.includes(field));
49
- });
50
- if (candidateIndexes.length === 0)
51
- return null;
52
- // Prefer indexes that match more filter fields
53
- candidateIndexes.sort((a, b) => {
54
- const aMatches = a.fields.filter(f => filterFields.includes(f)).length;
55
- const bMatches = b.fields.filter(f => filterFields.includes(f)).length;
56
- return bMatches - aMatches;
57
- });
58
- return candidateIndexes[0];
59
- }
60
- /**
61
- * Extract filter fields from filter conditions
62
- */
63
- extractFilterFields(filters) {
64
- const fields = [];
65
- const extract = (obj) => {
66
- if (!obj || typeof obj !== 'object')
67
- return;
68
- for (const key of Object.keys(obj)) {
69
- if (!key.startsWith('$')) {
70
- fields.push(key);
71
- }
72
- if (typeof obj[key] === 'object') {
73
- extract(obj[key]);
74
- }
75
- }
76
- };
77
- extract(filters);
78
- return [...new Set(fields)]; // Remove duplicates
79
- }
80
- /**
81
- * Optimize join type based on query characteristics
82
- *
83
- * Note: This method expects filter fields in one of two formats:
84
- * 1. Table-prefixed: "tableName.fieldName" (e.g., "accounts.type")
85
- * 2. Simple field name: "fieldName" (checked against joined table schema)
86
- *
87
- * Multi-level qualification (e.g., "schema.table.field") is not currently supported.
88
- */
89
- optimizeJoinType(join, ast) {
90
- // If we're filtering on the joined table, we can use INNER JOIN
91
- if (ast.filters) {
92
- const filterFields = this.extractFilterFields(ast.filters);
93
- // Check if any filter field references the joined table
94
- const hasFilterOnJoinTable = filterFields.some(field => {
95
- // Handle table-prefixed fields like "accounts.type"
96
- if (field.includes('.')) {
97
- const parts = field.split('.');
98
- // Only consider the first part as table name for simplicity
99
- // This assumes format: "table.field" not "schema.table.field"
100
- if (parts.length === 2 && parts[0] === join.table) {
101
- return true;
102
- }
103
- // If more than 2 parts or table doesn't match, skip this field
104
- return false;
105
- }
106
- // Also check if the field exists in the joined table schema (non-prefixed)
107
- const schema = this.schemas.get(join.table);
108
- if (schema) {
109
- return schema.fields[field] !== undefined;
110
- }
111
- return false;
112
- });
113
- if (hasFilterOnJoinTable) {
114
- return 'inner'; // Convert LEFT to INNER for better performance
115
- }
116
- }
117
- return join.type;
118
- }
119
- /**
120
- * Optimize a query AST to SQL
121
- */
122
- optimize(ast) {
123
- const schema = this.schemas.get(ast.object);
124
- if (!schema) {
125
- // Fallback to basic SQL generation
126
- return this.generateBasicSQL(ast);
127
- }
128
- let sql = 'SELECT ';
129
- // Fields
130
- if (ast.fields && ast.fields.length > 0) {
131
- sql += ast.fields.join(', ');
132
- }
133
- else {
134
- sql += '*';
135
- }
136
- sql += ` FROM ${ast.object}`;
137
- // Index hints
138
- if (ast.filters) {
139
- const filterFields = this.extractFilterFields(ast.filters);
140
- const bestIndex = this.getBestIndex(ast.object, filterFields);
141
- if (bestIndex) {
142
- // Add index hint for MySQL/MariaDB
143
- sql += ` USE INDEX (${bestIndex.name})`;
144
- }
145
- }
146
- // Optimized joins
147
- if (ast.joins && ast.joins.length > 0) {
148
- for (const join of ast.joins) {
149
- const optimizedType = this.optimizeJoinType(join, ast);
150
- sql += ` ${optimizedType.toUpperCase()} JOIN ${join.table}`;
151
- // Simplified join condition
152
- if (typeof join.on === 'string') {
153
- sql += ` ON ${join.on}`;
154
- }
155
- }
156
- }
157
- // WHERE clause
158
- if (ast.filters) {
159
- sql += ' WHERE ' + this.filtersToSQL(ast.filters);
160
- }
161
- // ORDER BY
162
- if (ast.sort && ast.sort.length > 0) {
163
- sql += ' ORDER BY ';
164
- sql += ast.sort.map(s => `${s.field} ${s.order.toUpperCase()}`).join(', ');
165
- }
166
- // LIMIT and OFFSET
167
- if (ast.limit !== undefined) {
168
- sql += ` LIMIT ${ast.limit}`;
169
- }
170
- if (ast.offset !== undefined) {
171
- sql += ` OFFSET ${ast.offset}`;
172
- }
173
- return sql;
174
- }
175
- /**
176
- * Convert filter object to SQL WHERE clause
177
- */
178
- filtersToSQL(filters) {
179
- if (typeof filters === 'string') {
180
- return filters;
181
- }
182
- // Simplified filter conversion
183
- const conditions = [];
184
- for (const [key, value] of Object.entries(filters)) {
185
- if (key === '$and') {
186
- const subconditions = value.map(f => this.filtersToSQL(f));
187
- conditions.push(`(${subconditions.join(' AND ')})`);
188
- }
189
- else if (key === '$or') {
190
- const subconditions = value.map(f => this.filtersToSQL(f));
191
- conditions.push(`(${subconditions.join(' OR ')})`);
192
- }
193
- else if (!key.startsWith('$')) {
194
- // Field condition
195
- if (typeof value === 'object' && value !== null) {
196
- for (const [op, val] of Object.entries(value)) {
197
- switch (op) {
198
- case '$eq':
199
- conditions.push(`${key} = '${val}'`);
200
- break;
201
- case '$ne':
202
- conditions.push(`${key} != '${val}'`);
203
- break;
204
- case '$gt':
205
- conditions.push(`${key} > '${val}'`);
206
- break;
207
- case '$gte':
208
- conditions.push(`${key} >= '${val}'`);
209
- break;
210
- case '$lt':
211
- conditions.push(`${key} < '${val}'`);
212
- break;
213
- case '$lte':
214
- conditions.push(`${key} <= '${val}'`);
215
- break;
216
- case '$in':
217
- const inValues = val.map(v => `'${v}'`).join(', ');
218
- conditions.push(`${key} IN (${inValues})`);
219
- break;
220
- }
221
- }
222
- }
223
- else {
224
- conditions.push(`${key} = '${value}'`);
225
- }
226
- }
227
- }
228
- return conditions.join(' AND ');
229
- }
230
- /**
231
- * Fallback: generate basic SQL without optimizations
232
- */
233
- generateBasicSQL(ast) {
234
- let sql = 'SELECT ';
235
- if (ast.fields && ast.fields.length > 0) {
236
- sql += ast.fields.join(', ');
237
- }
238
- else {
239
- sql += '*';
240
- }
241
- sql += ` FROM ${ast.object}`;
242
- if (ast.filters) {
243
- sql += ' WHERE ' + this.filtersToSQL(ast.filters);
244
- }
245
- if (ast.sort && ast.sort.length > 0) {
246
- sql += ' ORDER BY ';
247
- sql += ast.sort.map(s => `${s.field} ${s.order.toUpperCase()}`).join(', ');
248
- }
249
- if (ast.limit !== undefined) {
250
- sql += ` LIMIT ${ast.limit}`;
251
- }
252
- if (ast.offset !== undefined) {
253
- sql += ` OFFSET ${ast.offset}`;
254
- }
255
- return sql;
256
- }
257
- /**
258
- * Clear all registered schemas
259
- */
260
- clearSchemas() {
261
- this.schemas.clear();
262
- }
263
- }
264
- exports.SQLQueryOptimizer = SQLQueryOptimizer;
265
- //# sourceMappingURL=SQLQueryOptimizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SQLQueryOptimizer.js","sourceRoot":"","sources":["../../src/optimizations/SQLQueryOptimizer.ts"],"names":[],"mappings":"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"}
@@ -1,32 +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
- * Kernel Optimizations Module
10
- *
11
- * This module contains 10 key optimizations for the ObjectQL kernel:
12
- *
13
- * 1. OptimizedMetadataRegistry - O(k) package uninstall with secondary indexes
14
- * 2. QueryCompiler - LRU cache for compiled query plans
15
- * 3. CompiledHookManager - Pre-compiled hook pipelines
16
- * 4. GlobalConnectionPool - Kernel-level connection pooling
17
- * 5. OptimizedValidationEngine - Compiled validation rules
18
- * 6. LazyMetadataLoader - On-demand metadata loading with predictive preload
19
- * 7. DependencyGraph - DAG-based dependency resolution
20
- * 8. SQLQueryOptimizer - SQL-aware query optimization with index hints
21
- *
22
- * Note: TypeScript type generation optimization (#7) and memory-mapped storage (#10)
23
- * are not included in this release for compatibility and complexity reasons.
24
- */
25
- export { OptimizedMetadataRegistry } from './OptimizedMetadataRegistry';
26
- export { QueryCompiler, type CompiledQuery } from './QueryCompiler';
27
- export { CompiledHookManager, type Hook } from './CompiledHookManager';
28
- export { GlobalConnectionPool, type Connection, type PoolLimits } from './GlobalConnectionPool';
29
- export { OptimizedValidationEngine, type ValidatorFunction, type ValidationSchema } from './OptimizedValidationEngine';
30
- export { LazyMetadataLoader, type ObjectMetadata, type MetadataLoader } from './LazyMetadataLoader';
31
- export { DependencyGraph, type DependencyEdge, type DependencyType } from './DependencyGraph';
32
- export { SQLQueryOptimizer, type IndexMetadata, type SchemaWithIndexes, type OptimizableQueryAST } from './SQLQueryOptimizer';
@@ -1,44 +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.SQLQueryOptimizer = exports.DependencyGraph = exports.LazyMetadataLoader = exports.OptimizedValidationEngine = exports.GlobalConnectionPool = exports.CompiledHookManager = exports.QueryCompiler = exports.OptimizedMetadataRegistry = void 0;
11
- /**
12
- * Kernel Optimizations Module
13
- *
14
- * This module contains 10 key optimizations for the ObjectQL kernel:
15
- *
16
- * 1. OptimizedMetadataRegistry - O(k) package uninstall with secondary indexes
17
- * 2. QueryCompiler - LRU cache for compiled query plans
18
- * 3. CompiledHookManager - Pre-compiled hook pipelines
19
- * 4. GlobalConnectionPool - Kernel-level connection pooling
20
- * 5. OptimizedValidationEngine - Compiled validation rules
21
- * 6. LazyMetadataLoader - On-demand metadata loading with predictive preload
22
- * 7. DependencyGraph - DAG-based dependency resolution
23
- * 8. SQLQueryOptimizer - SQL-aware query optimization with index hints
24
- *
25
- * Note: TypeScript type generation optimization (#7) and memory-mapped storage (#10)
26
- * are not included in this release for compatibility and complexity reasons.
27
- */
28
- var OptimizedMetadataRegistry_1 = require("./OptimizedMetadataRegistry");
29
- Object.defineProperty(exports, "OptimizedMetadataRegistry", { enumerable: true, get: function () { return OptimizedMetadataRegistry_1.OptimizedMetadataRegistry; } });
30
- var QueryCompiler_1 = require("./QueryCompiler");
31
- Object.defineProperty(exports, "QueryCompiler", { enumerable: true, get: function () { return QueryCompiler_1.QueryCompiler; } });
32
- var CompiledHookManager_1 = require("./CompiledHookManager");
33
- Object.defineProperty(exports, "CompiledHookManager", { enumerable: true, get: function () { return CompiledHookManager_1.CompiledHookManager; } });
34
- var GlobalConnectionPool_1 = require("./GlobalConnectionPool");
35
- Object.defineProperty(exports, "GlobalConnectionPool", { enumerable: true, get: function () { return GlobalConnectionPool_1.GlobalConnectionPool; } });
36
- var OptimizedValidationEngine_1 = require("./OptimizedValidationEngine");
37
- Object.defineProperty(exports, "OptimizedValidationEngine", { enumerable: true, get: function () { return OptimizedValidationEngine_1.OptimizedValidationEngine; } });
38
- var LazyMetadataLoader_1 = require("./LazyMetadataLoader");
39
- Object.defineProperty(exports, "LazyMetadataLoader", { enumerable: true, get: function () { return LazyMetadataLoader_1.LazyMetadataLoader; } });
40
- var DependencyGraph_1 = require("./DependencyGraph");
41
- Object.defineProperty(exports, "DependencyGraph", { enumerable: true, get: function () { return DependencyGraph_1.DependencyGraph; } });
42
- var SQLQueryOptimizer_1 = require("./SQLQueryOptimizer");
43
- Object.defineProperty(exports, "SQLQueryOptimizer", { enumerable: true, get: function () { return SQLQueryOptimizer_1.SQLQueryOptimizer; } });
44
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/optimizations/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,iDAAoE;AAA3D,8GAAA,aAAa,OAAA;AACtB,6DAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,+DAAgG;AAAvF,4HAAA,oBAAoB,OAAA;AAC7B,yEAAuH;AAA9G,sIAAA,yBAAyB,OAAA;AAClC,2DAAoG;AAA3F,wHAAA,kBAAkB,OAAA;AAC3B,qDAA8F;AAArF,kHAAA,eAAe,OAAA;AACxB,yDAA8H;AAArH,sHAAA,iBAAiB,OAAA"}
@@ -1,180 +0,0 @@
1
- /**
2
- * ObjectStack Protocol Implementation
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 { ObjectStackProtocol } from '@objectstack/spec/api';
9
- import { IObjectQL } from '@objectql/types';
10
- /**
11
- * Bridges the ObjectStack Protocol (Specification) to the ObjectQL Engine (Implementation)
12
- */
13
- export declare class ObjectStackProtocolImplementation implements ObjectStackProtocol {
14
- private engine;
15
- constructor(engine: IObjectQL);
16
- /**
17
- * Get API Discovery Document
18
- */
19
- getDiscovery(args: any): Promise<any>;
20
- /**
21
- * Get Metadata Types (e.g., ['object', 'action'])
22
- */
23
- getMetaTypes(args: any): Promise<{
24
- types: string[];
25
- }>;
26
- /**
27
- * Get Metadata Items for a Type
28
- */
29
- getMetaItems(args: {
30
- type: string;
31
- }): Promise<{
32
- type: string;
33
- items: any[];
34
- }>;
35
- /**
36
- * Get Metadata Item
37
- */
38
- getMetaItem(args: {
39
- type: string;
40
- name: string;
41
- }): Promise<any>;
42
- /**
43
- * Get Cached Metadata Item
44
- */
45
- getMetaItemCached(args: {
46
- type: string;
47
- name: string;
48
- }): Promise<any>;
49
- /**
50
- * Get UI View
51
- */
52
- getUiView(args: {
53
- object: string;
54
- type: 'list' | 'form';
55
- }): Promise<any>;
56
- /**
57
- * Find Data Records
58
- */
59
- findData(args: {
60
- object: string;
61
- query?: any;
62
- }): Promise<any>;
63
- /**
64
- * Count Data Records
65
- */
66
- countData(args: {
67
- object: string;
68
- query?: any;
69
- }): Promise<number>;
70
- /**
71
- * Get Single Data Record
72
- */
73
- getData(args: {
74
- object: string;
75
- id: string;
76
- }): Promise<any>;
77
- /**
78
- * Create Data Record
79
- */
80
- createData(args: {
81
- object: string;
82
- data: any;
83
- }): Promise<any>;
84
- /**
85
- * Update Data Record
86
- */
87
- updateData(args: {
88
- object: string;
89
- id: string;
90
- data: any;
91
- }): Promise<any>;
92
- /**
93
- * Delete Data Record
94
- */
95
- deleteData(args: {
96
- object: string;
97
- id: string;
98
- }): Promise<{
99
- object: string;
100
- id: string;
101
- success: boolean;
102
- }>;
103
- /**
104
- * Create Many Data Records
105
- */
106
- createManyData(args: {
107
- object: string;
108
- records: any[];
109
- options?: any;
110
- }): Promise<any>;
111
- /**
112
- * Update Many Data Records
113
- */
114
- updateManyData(args: {
115
- object: string;
116
- records: {
117
- id: string;
118
- data: any;
119
- }[];
120
- options?: any;
121
- }): Promise<any>;
122
- /**
123
- * Delete Many Data Records
124
- */
125
- deleteManyData(args: {
126
- object: string;
127
- ids: string[];
128
- options?: any;
129
- }): Promise<any>;
130
- /**
131
- * Batch Operations
132
- */
133
- batchData(args: {
134
- object: string;
135
- request: {
136
- operation: 'create' | 'update' | 'delete' | 'upsert';
137
- records: any[];
138
- };
139
- }): Promise<any>;
140
- /**
141
- * Execute Action/Operation
142
- */
143
- performAction(args: {
144
- object: string;
145
- id?: string;
146
- action: string;
147
- args?: any;
148
- }): Promise<any>;
149
- /**
150
- * Analytics Query - Execute analytics query
151
- */
152
- analyticsQuery(args: any): Promise<any>;
153
- /**
154
- * Get Analytics Metadata
155
- */
156
- getAnalyticsMeta(args: any): Promise<any>;
157
- /**
158
- * Trigger Automation
159
- */
160
- triggerAutomation(args: {
161
- trigger: string;
162
- payload: Record<string, any>;
163
- }): Promise<{
164
- success: boolean;
165
- jobId?: string;
166
- result?: any;
167
- }>;
168
- /**
169
- * List Spaces (Hub/Workspace Management)
170
- */
171
- listSpaces(args: any): Promise<any>;
172
- /**
173
- * Create Space (Hub/Workspace Management)
174
- */
175
- createSpace(args: any): Promise<any>;
176
- /**
177
- * Install Plugin (Hub/Extension Management)
178
- */
179
- installPlugin(args: any): Promise<any>;
180
- }