@bhushanpawar/sqldb 1.0.6 → 1.0.7

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 (169) hide show
  1. package/dist/cache/cache-manager.d.ts +18 -1
  2. package/dist/cache/cache-manager.d.ts.map +1 -1
  3. package/dist/cache/cache-manager.js +76 -2
  4. package/dist/cache/cache-manager.js.map +1 -1
  5. package/dist/cli/index.js +0 -0
  6. package/dist/client.d.ts +54 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +124 -1
  9. package/dist/client.js.map +1 -1
  10. package/dist/connection/mariadb.d.ts +15 -0
  11. package/dist/connection/mariadb.d.ts.map +1 -1
  12. package/dist/connection/mariadb.js +25 -0
  13. package/dist/connection/mariadb.js.map +1 -1
  14. package/dist/discovery/relationship-parser.d.ts.map +1 -1
  15. package/dist/discovery/relationship-parser.js +8 -1
  16. package/dist/discovery/relationship-parser.js.map +1 -1
  17. package/dist/discovery/schema-reader.d.ts +2 -0
  18. package/dist/discovery/schema-reader.d.ts.map +1 -1
  19. package/dist/discovery/schema-reader.js +91 -0
  20. package/dist/discovery/schema-reader.js.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/query/operations.d.ts +35 -1
  26. package/dist/query/operations.d.ts.map +1 -1
  27. package/dist/query/operations.js +307 -4
  28. package/dist/query/operations.js.map +1 -1
  29. package/dist/query/query-tracker.d.ts +30 -0
  30. package/dist/query/query-tracker.d.ts.map +1 -1
  31. package/dist/query/query-tracker.js +86 -1
  32. package/dist/query/query-tracker.js.map +1 -1
  33. package/dist/search/inverted-index-manager.d.ts +76 -0
  34. package/dist/search/inverted-index-manager.d.ts.map +1 -0
  35. package/dist/search/inverted-index-manager.js +371 -0
  36. package/dist/search/inverted-index-manager.js.map +1 -0
  37. package/dist/search/search-ranker.d.ts +91 -0
  38. package/dist/search/search-ranker.d.ts.map +1 -0
  39. package/dist/search/search-ranker.js +281 -0
  40. package/dist/search/search-ranker.js.map +1 -0
  41. package/dist/search/tokenizer.d.ts +80 -0
  42. package/dist/search/tokenizer.d.ts.map +1 -0
  43. package/dist/search/tokenizer.js +398 -0
  44. package/dist/search/tokenizer.js.map +1 -0
  45. package/dist/types/cache.d.ts +16 -0
  46. package/dist/types/cache.d.ts.map +1 -1
  47. package/dist/types/cache.js.map +1 -1
  48. package/dist/types/config.d.ts +10 -0
  49. package/dist/types/config.d.ts.map +1 -1
  50. package/dist/types/config.js +13 -1
  51. package/dist/types/config.js.map +1 -1
  52. package/dist/types/query.d.ts +4 -0
  53. package/dist/types/query.d.ts.map +1 -1
  54. package/dist/types/schema.d.ts +35 -0
  55. package/dist/types/schema.d.ts.map +1 -1
  56. package/dist/types/search.d.ts +223 -0
  57. package/dist/types/search.d.ts.map +1 -0
  58. package/dist/types/search.js +54 -0
  59. package/dist/types/search.js.map +1 -0
  60. package/dist/types/warming.d.ts +1 -1
  61. package/dist/types/warming.d.ts.map +1 -1
  62. package/dist/utils/case-converter.d.ts +38 -0
  63. package/dist/utils/case-converter.d.ts.map +1 -0
  64. package/dist/utils/case-converter.js +90 -0
  65. package/dist/utils/case-converter.js.map +1 -0
  66. package/dist/warming/auto-warming-manager.d.ts.map +1 -1
  67. package/dist/warming/auto-warming-manager.js +5 -0
  68. package/dist/warming/auto-warming-manager.js.map +1 -1
  69. package/package.json +7 -3
  70. package/dist/best-practice-example.d.ts +0 -35
  71. package/dist/best-practice-example.d.ts.map +0 -1
  72. package/dist/best-practice-example.js +0 -171
  73. package/dist/best-practice-example.js.map +0 -1
  74. package/dist/db-schema.d.ts +0 -413
  75. package/dist/db-schema.d.ts.map +0 -1
  76. package/dist/db-schema.js +0 -1149
  77. package/dist/db-schema.js.map +0 -1
  78. package/dist/demo-debug.d.ts +0 -2
  79. package/dist/demo-debug.d.ts.map +0 -1
  80. package/dist/demo-debug.js +0 -36
  81. package/dist/demo-debug.js.map +0 -1
  82. package/dist/smart-cache/cache/cache-key-builder.d.ts +0 -17
  83. package/dist/smart-cache/cache/cache-key-builder.d.ts.map +0 -1
  84. package/dist/smart-cache/cache/cache-key-builder.js +0 -100
  85. package/dist/smart-cache/cache/cache-key-builder.js.map +0 -1
  86. package/dist/smart-cache/cache/cache-manager.d.ts +0 -22
  87. package/dist/smart-cache/cache/cache-manager.d.ts.map +0 -1
  88. package/dist/smart-cache/cache/cache-manager.js +0 -124
  89. package/dist/smart-cache/cache/cache-manager.js.map +0 -1
  90. package/dist/smart-cache/cache/invalidation.d.ts +0 -15
  91. package/dist/smart-cache/cache/invalidation.d.ts.map +0 -1
  92. package/dist/smart-cache/cache/invalidation.js +0 -59
  93. package/dist/smart-cache/cache/invalidation.js.map +0 -1
  94. package/dist/smart-cache/client.d.ts +0 -36
  95. package/dist/smart-cache/client.d.ts.map +0 -1
  96. package/dist/smart-cache/client.js +0 -138
  97. package/dist/smart-cache/client.js.map +0 -1
  98. package/dist/smart-cache/connection/mariadb.d.ts +0 -14
  99. package/dist/smart-cache/connection/mariadb.d.ts.map +0 -1
  100. package/dist/smart-cache/connection/mariadb.js +0 -82
  101. package/dist/smart-cache/connection/mariadb.js.map +0 -1
  102. package/dist/smart-cache/connection/redis.d.ts +0 -20
  103. package/dist/smart-cache/connection/redis.d.ts.map +0 -1
  104. package/dist/smart-cache/connection/redis.js +0 -168
  105. package/dist/smart-cache/connection/redis.js.map +0 -1
  106. package/dist/smart-cache/discovery/dependency-graph.d.ts +0 -20
  107. package/dist/smart-cache/discovery/dependency-graph.d.ts.map +0 -1
  108. package/dist/smart-cache/discovery/dependency-graph.js +0 -89
  109. package/dist/smart-cache/discovery/dependency-graph.js.map +0 -1
  110. package/dist/smart-cache/discovery/relationship-parser.d.ts +0 -10
  111. package/dist/smart-cache/discovery/relationship-parser.d.ts.map +0 -1
  112. package/dist/smart-cache/discovery/relationship-parser.js +0 -40
  113. package/dist/smart-cache/discovery/relationship-parser.js.map +0 -1
  114. package/dist/smart-cache/discovery/schema-reader.d.ts +0 -15
  115. package/dist/smart-cache/discovery/schema-reader.d.ts.map +0 -1
  116. package/dist/smart-cache/discovery/schema-reader.js +0 -82
  117. package/dist/smart-cache/discovery/schema-reader.js.map +0 -1
  118. package/dist/smart-cache/examples/basic-usage.d.ts +0 -3
  119. package/dist/smart-cache/examples/basic-usage.d.ts.map +0 -1
  120. package/dist/smart-cache/examples/basic-usage.js +0 -105
  121. package/dist/smart-cache/examples/basic-usage.js.map +0 -1
  122. package/dist/smart-cache/examples/hooks-example.d.ts +0 -3
  123. package/dist/smart-cache/examples/hooks-example.d.ts.map +0 -1
  124. package/dist/smart-cache/examples/hooks-example.js +0 -133
  125. package/dist/smart-cache/examples/hooks-example.js.map +0 -1
  126. package/dist/smart-cache/examples/relationships-example.d.ts +0 -3
  127. package/dist/smart-cache/examples/relationships-example.d.ts.map +0 -1
  128. package/dist/smart-cache/examples/relationships-example.js +0 -88
  129. package/dist/smart-cache/examples/relationships-example.js.map +0 -1
  130. package/dist/smart-cache/hooks/hooks-manager.d.ts +0 -22
  131. package/dist/smart-cache/hooks/hooks-manager.d.ts.map +0 -1
  132. package/dist/smart-cache/hooks/hooks-manager.js +0 -117
  133. package/dist/smart-cache/hooks/hooks-manager.js.map +0 -1
  134. package/dist/smart-cache/index.d.ts +0 -19
  135. package/dist/smart-cache/index.d.ts.map +0 -1
  136. package/dist/smart-cache/index.js +0 -49
  137. package/dist/smart-cache/index.js.map +0 -1
  138. package/dist/smart-cache/query/operations.d.ts +0 -31
  139. package/dist/smart-cache/query/operations.d.ts.map +0 -1
  140. package/dist/smart-cache/query/operations.js +0 -187
  141. package/dist/smart-cache/query/operations.js.map +0 -1
  142. package/dist/smart-cache/query/query-builder.d.ts +0 -15
  143. package/dist/smart-cache/query/query-builder.d.ts.map +0 -1
  144. package/dist/smart-cache/query/query-builder.js +0 -169
  145. package/dist/smart-cache/query/query-builder.js.map +0 -1
  146. package/dist/smart-cache/query/table-proxy.d.ts +0 -11
  147. package/dist/smart-cache/query/table-proxy.d.ts.map +0 -1
  148. package/dist/smart-cache/query/table-proxy.js +0 -25
  149. package/dist/smart-cache/query/table-proxy.js.map +0 -1
  150. package/dist/smart-cache/types/cache.d.ts +0 -29
  151. package/dist/smart-cache/types/cache.d.ts.map +0 -1
  152. package/dist/smart-cache/types/cache.js +0 -10
  153. package/dist/smart-cache/types/cache.js.map +0 -1
  154. package/dist/smart-cache/types/config.d.ts +0 -47
  155. package/dist/smart-cache/types/config.d.ts.map +0 -1
  156. package/dist/smart-cache/types/config.js +0 -27
  157. package/dist/smart-cache/types/config.js.map +0 -1
  158. package/dist/smart-cache/types/query.d.ts +0 -36
  159. package/dist/smart-cache/types/query.d.ts.map +0 -1
  160. package/dist/smart-cache/types/query.js +0 -3
  161. package/dist/smart-cache/types/query.js.map +0 -1
  162. package/dist/smart-cache/types/schema.d.ts +0 -25
  163. package/dist/smart-cache/types/schema.d.ts.map +0 -1
  164. package/dist/smart-cache/types/schema.js +0 -3
  165. package/dist/smart-cache/types/schema.js.map +0 -1
  166. package/dist/trial.d.ts +0 -7
  167. package/dist/trial.d.ts.map +0 -1
  168. package/dist/trial.js +0 -30
  169. package/dist/trial.js.map +0 -1
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TableOperationsImpl = void 0;
4
+ const query_tracker_1 = require("./query-tracker");
4
5
  class TableOperationsImpl {
5
- constructor(tableName, dbManager, cacheManager, invalidationManager, queryBuilder, cacheConfig) {
6
+ constructor(tableName, dbManager, cacheManager, invalidationManager, queryBuilder, cacheConfig, statsTracker, indexManager, searchRanker) {
6
7
  this.tableName = tableName;
7
8
  this.dbManager = dbManager;
8
9
  this.cacheManager = cacheManager;
9
10
  this.invalidationManager = invalidationManager;
10
11
  this.queryBuilder = queryBuilder;
11
12
  this.cacheConfig = cacheConfig;
13
+ this.statsTracker = statsTracker;
14
+ this.indexManager = indexManager;
15
+ this.searchRanker = searchRanker;
12
16
  }
13
17
  async findOne(where, options) {
14
18
  const mergedOptions = { ...options, limit: 1 };
@@ -19,6 +23,8 @@ class TableOperationsImpl {
19
23
  const skipCache = options?.skipCache || false;
20
24
  const correlationId = options?.correlationId;
21
25
  const withRelations = options?.withRelations;
26
+ const startTime = Date.now();
27
+ let results;
22
28
  // Build cache key (exclude correlationId, skipCache, and withRelations from key as they don't affect the base query result)
23
29
  const { correlationId: _, skipCache: __, withRelations: ___, ...cacheableOptions } = options || {};
24
30
  const cacheKey = this.cacheManager
@@ -28,16 +34,49 @@ class TableOperationsImpl {
28
34
  if (!skipCache && this.cacheManager.isEnabled()) {
29
35
  const cached = await this.cacheManager.get(cacheKey);
30
36
  if (cached !== null) {
37
+ results = cached;
38
+ // Record cache hit for stats
39
+ if (this.statsTracker) {
40
+ const executionTime = Date.now() - startTime;
41
+ const queryId = (0, query_tracker_1.generateQueryId)();
42
+ this.statsTracker.recordAccess({
43
+ queryId,
44
+ tableName: this.tableName,
45
+ queryType: 'findMany',
46
+ filters: JSON.stringify(where || {}),
47
+ executionTimeMs: executionTime,
48
+ cacheHit: true,
49
+ timestamp: new Date(),
50
+ }).catch(() => {
51
+ // Ignore stats tracking errors
52
+ });
53
+ }
31
54
  // If withRelations is requested, fetch and attach related data
32
55
  if (withRelations) {
33
- return await this.attachRelations(cached, withRelations, correlationId);
56
+ return await this.attachRelations(results, withRelations, correlationId);
34
57
  }
35
- return cached;
58
+ return results;
36
59
  }
37
60
  }
38
61
  // Query database
39
62
  const { sql, params } = this.queryBuilder.buildSelect(this.tableName, where, options);
40
- const results = await this.dbManager.query(sql, params, correlationId);
63
+ results = await this.dbManager.query(sql, params, correlationId);
64
+ const executionTime = Date.now() - startTime;
65
+ // Record query stats for auto-warming
66
+ if (this.statsTracker) {
67
+ const queryId = (0, query_tracker_1.generateQueryId)();
68
+ this.statsTracker.recordAccess({
69
+ queryId,
70
+ tableName: this.tableName,
71
+ queryType: 'findMany',
72
+ filters: JSON.stringify(where || {}),
73
+ executionTimeMs: executionTime,
74
+ cacheHit: false,
75
+ timestamp: new Date(),
76
+ }).catch(() => {
77
+ // Ignore stats tracking errors
78
+ });
79
+ }
41
80
  // Cache results
42
81
  if (!skipCache && this.cacheManager.isEnabled()) {
43
82
  await this.cacheManager.set(cacheKey, results);
@@ -49,6 +88,7 @@ class TableOperationsImpl {
49
88
  return results;
50
89
  }
51
90
  async findById(id, correlationId) {
91
+ const startTime = Date.now();
52
92
  const cacheKey = this.cacheManager
53
93
  .getKeyBuilder()
54
94
  .buildIdKey(this.tableName, id);
@@ -56,13 +96,45 @@ class TableOperationsImpl {
56
96
  if (this.cacheManager.isEnabled()) {
57
97
  const cached = await this.cacheManager.get(cacheKey);
58
98
  if (cached !== null) {
99
+ // Record cache hit for stats
100
+ if (this.statsTracker) {
101
+ const executionTime = Date.now() - startTime;
102
+ const queryId = (0, query_tracker_1.generateQueryId)();
103
+ this.statsTracker.recordAccess({
104
+ queryId,
105
+ tableName: this.tableName,
106
+ queryType: 'findById',
107
+ filters: JSON.stringify({ id }),
108
+ executionTimeMs: executionTime,
109
+ cacheHit: true,
110
+ timestamp: new Date(),
111
+ }).catch(() => {
112
+ // Ignore stats tracking errors
113
+ });
114
+ }
59
115
  return cached;
60
116
  }
61
117
  }
62
118
  // Query database
63
119
  const { sql, params } = this.queryBuilder.buildSelectById(this.tableName, id);
64
120
  const results = await this.dbManager.query(sql, params, correlationId);
121
+ const executionTime = Date.now() - startTime;
65
122
  const result = results.length > 0 ? results[0] : null;
123
+ // Record query stats for auto-warming
124
+ if (this.statsTracker) {
125
+ const queryId = (0, query_tracker_1.generateQueryId)();
126
+ this.statsTracker.recordAccess({
127
+ queryId,
128
+ tableName: this.tableName,
129
+ queryType: 'findById',
130
+ filters: JSON.stringify({ id }),
131
+ executionTimeMs: executionTime,
132
+ cacheHit: false,
133
+ timestamp: new Date(),
134
+ }).catch(() => {
135
+ // Ignore stats tracking errors
136
+ });
137
+ }
66
138
  // Cache result
67
139
  if (result && this.cacheManager.isEnabled()) {
68
140
  await this.cacheManager.set(cacheKey, result);
@@ -70,6 +142,7 @@ class TableOperationsImpl {
70
142
  return result;
71
143
  }
72
144
  async count(where, correlationId) {
145
+ const startTime = Date.now();
73
146
  const cacheKey = this.cacheManager
74
147
  .getKeyBuilder()
75
148
  .buildKey(this.tableName, 'count', { where });
@@ -77,13 +150,45 @@ class TableOperationsImpl {
77
150
  if (this.cacheManager.isEnabled()) {
78
151
  const cached = await this.cacheManager.get(cacheKey);
79
152
  if (cached !== null) {
153
+ // Record cache hit for stats
154
+ if (this.statsTracker) {
155
+ const executionTime = Date.now() - startTime;
156
+ const queryId = (0, query_tracker_1.generateQueryId)();
157
+ this.statsTracker.recordAccess({
158
+ queryId,
159
+ tableName: this.tableName,
160
+ queryType: 'count',
161
+ filters: JSON.stringify(where || {}),
162
+ executionTimeMs: executionTime,
163
+ cacheHit: true,
164
+ timestamp: new Date(),
165
+ }).catch(() => {
166
+ // Ignore stats tracking errors
167
+ });
168
+ }
80
169
  return cached;
81
170
  }
82
171
  }
83
172
  // Query database
84
173
  const { sql, params } = this.queryBuilder.buildCount(this.tableName, where);
85
174
  const results = await this.dbManager.query(sql, params, correlationId);
175
+ const executionTime = Date.now() - startTime;
86
176
  const count = results[0]?.count || 0;
177
+ // Record query stats for auto-warming
178
+ if (this.statsTracker) {
179
+ const queryId = (0, query_tracker_1.generateQueryId)();
180
+ this.statsTracker.recordAccess({
181
+ queryId,
182
+ tableName: this.tableName,
183
+ queryType: 'count',
184
+ filters: JSON.stringify(where || {}),
185
+ executionTimeMs: executionTime,
186
+ cacheHit: false,
187
+ timestamp: new Date(),
188
+ }).catch(() => {
189
+ // Ignore stats tracking errors
190
+ });
191
+ }
87
192
  // Cache with shorter TTL (counts change frequently)
88
193
  if (this.cacheManager.isEnabled()) {
89
194
  const shortTTL = Math.min(this.cacheConfig.defaultTTL, 30);
@@ -188,6 +293,7 @@ class TableOperationsImpl {
188
293
  return (result.affectedRows || 0) > 0;
189
294
  }
190
295
  async raw(sql, params, correlationId) {
296
+ const startTime = Date.now();
191
297
  const cacheKey = this.cacheManager
192
298
  .getKeyBuilder()
193
299
  .buildKey(this.tableName, 'raw', { sql, params });
@@ -195,11 +301,43 @@ class TableOperationsImpl {
195
301
  if (this.cacheManager.isEnabled()) {
196
302
  const cached = await this.cacheManager.get(cacheKey);
197
303
  if (cached !== null) {
304
+ // Record cache hit for stats (for SELECT queries)
305
+ if (this.statsTracker && sql.trim().toUpperCase().startsWith('SELECT')) {
306
+ const executionTime = Date.now() - startTime;
307
+ const queryId = (0, query_tracker_1.generateQueryId)();
308
+ this.statsTracker.recordAccess({
309
+ queryId,
310
+ tableName: this.tableName,
311
+ queryType: 'raw',
312
+ filters: JSON.stringify({ sql: sql.substring(0, 100), params }),
313
+ executionTimeMs: executionTime,
314
+ cacheHit: true,
315
+ timestamp: new Date(),
316
+ }).catch(() => {
317
+ // Ignore stats tracking errors
318
+ });
319
+ }
198
320
  return cached;
199
321
  }
200
322
  }
201
323
  // Query database
202
324
  const result = await this.dbManager.query(sql, params, correlationId);
325
+ const executionTime = Date.now() - startTime;
326
+ // Record query stats for auto-warming (for SELECT queries)
327
+ if (this.statsTracker && sql.trim().toUpperCase().startsWith('SELECT')) {
328
+ const queryId = (0, query_tracker_1.generateQueryId)();
329
+ this.statsTracker.recordAccess({
330
+ queryId,
331
+ tableName: this.tableName,
332
+ queryType: 'raw',
333
+ filters: JSON.stringify({ sql: sql.substring(0, 100), params }),
334
+ executionTimeMs: executionTime,
335
+ cacheHit: false,
336
+ timestamp: new Date(),
337
+ }).catch(() => {
338
+ // Ignore stats tracking errors
339
+ });
340
+ }
203
341
  // Cache with 1-minute TTL
204
342
  if (this.cacheManager.isEnabled()) {
205
343
  await this.cacheManager.set(cacheKey, result, 60);
@@ -381,6 +519,171 @@ class TableOperationsImpl {
381
519
  }
382
520
  }
383
521
  }
522
+ /**
523
+ * Full-text search using inverted index
524
+ * Returns ranked results with optional highlighting
525
+ */
526
+ async search(query, options) {
527
+ if (!this.indexManager || !this.searchRanker) {
528
+ throw new Error(`Search is not enabled for table "${this.tableName}". ` +
529
+ 'Configure search in SqlDBConfig and initialize the client.');
530
+ }
531
+ const startTime = Date.now();
532
+ const { fields, limit = 10, offset = 0, filters, ranking, highlightFields, minScore = 0, } = options || {};
533
+ // Step 1: Search inverted index to get document IDs
534
+ const docIds = await this.indexManager.search(this.tableName, query, limit + offset);
535
+ if (docIds.length === 0) {
536
+ return [];
537
+ }
538
+ // Step 2: Fetch full records from database
539
+ const idsToFetch = docIds.slice(offset, offset + limit);
540
+ if (idsToFetch.length === 0) {
541
+ return [];
542
+ }
543
+ // Detect the ID field name (id, service_id, etc.)
544
+ const idField = this.detectIdField();
545
+ // Build SQL IN clause manually since query builder doesn't support $in
546
+ const placeholders = idsToFetch.map(() => '?').join(',');
547
+ const whereFilters = filters ? Object.entries(filters).map(([key, val]) => `${key} = ?`).join(' AND ') : '';
548
+ const sql = whereFilters
549
+ ? `SELECT * FROM ${this.tableName} WHERE ${idField} IN (${placeholders}) AND ${whereFilters} LIMIT ?`
550
+ : `SELECT * FROM ${this.tableName} WHERE ${idField} IN (${placeholders}) LIMIT ?`;
551
+ const params = filters
552
+ ? [...idsToFetch, ...Object.values(filters), limit]
553
+ : [...idsToFetch, limit];
554
+ const records = await this.raw(sql, params);
555
+ // Create a map for quick lookup (ID as string to support UUIDs)
556
+ const recordsMap = new Map();
557
+ for (const record of records) {
558
+ const id = record[idField];
559
+ if (id !== undefined && id !== null) {
560
+ recordsMap.set(String(id), record);
561
+ }
562
+ }
563
+ // Step 3: Build results array in the correct order with scores
564
+ const results = [];
565
+ for (const docId of idsToFetch) {
566
+ const record = recordsMap.get(docId);
567
+ if (!record)
568
+ continue;
569
+ // Calculate relevance score (simplified for now)
570
+ const score = this.calculateSimpleScore(query, record, fields);
571
+ if (score < minScore) {
572
+ continue;
573
+ }
574
+ const result = {
575
+ score,
576
+ data: record,
577
+ };
578
+ // Add highlights if requested
579
+ if (highlightFields && highlightFields.length > 0) {
580
+ result.highlights = {};
581
+ const queryTerms = query.toLowerCase().split(/\s+/);
582
+ for (const field of highlightFields) {
583
+ const fieldValue = record[field];
584
+ if (fieldValue && typeof fieldValue === 'string') {
585
+ result.highlights[field] = this.searchRanker.highlightText(fieldValue, queryTerms);
586
+ }
587
+ }
588
+ }
589
+ // Add matched terms
590
+ result.matchedTerms = query.toLowerCase().split(/\s+/);
591
+ results.push(result);
592
+ }
593
+ const executionTime = Date.now() - startTime;
594
+ // Record stats if enabled
595
+ if (this.statsTracker) {
596
+ const queryId = (0, query_tracker_1.generateQueryId)();
597
+ this.statsTracker.recordAccess({
598
+ queryId,
599
+ tableName: this.tableName,
600
+ queryType: 'search',
601
+ filters: JSON.stringify({ query, options }),
602
+ executionTimeMs: executionTime,
603
+ cacheHit: false,
604
+ timestamp: new Date(),
605
+ }).catch(() => {
606
+ // Ignore stats tracking errors
607
+ });
608
+ }
609
+ return results;
610
+ }
611
+ /**
612
+ * Build search index for this table from scratch
613
+ */
614
+ async buildSearchIndex() {
615
+ if (!this.indexManager) {
616
+ throw new Error(`Search is not enabled for table "${this.tableName}". ` +
617
+ 'Configure search in SqlDBConfig and initialize the client.');
618
+ }
619
+ // Fetch all records from the table
620
+ const records = await this.findMany({}, { skipCache: true });
621
+ // Build the index
622
+ const stats = await this.indexManager.buildIndex(this.tableName, records);
623
+ return stats;
624
+ }
625
+ /**
626
+ * Rebuild search index (clear and rebuild)
627
+ */
628
+ async rebuildSearchIndex() {
629
+ if (!this.indexManager) {
630
+ throw new Error(`Search is not enabled for table "${this.tableName}". ` +
631
+ 'Configure search in SqlDBConfig and initialize the client.');
632
+ }
633
+ // Clear existing index
634
+ await this.indexManager.clearIndex(this.tableName);
635
+ // Rebuild from scratch
636
+ return await this.buildSearchIndex();
637
+ }
638
+ /**
639
+ * Get search index statistics
640
+ */
641
+ async getSearchStats() {
642
+ if (!this.indexManager) {
643
+ return null;
644
+ }
645
+ return await this.indexManager.getStats(this.tableName);
646
+ }
647
+ /**
648
+ * Calculate a simple relevance score for a document
649
+ * This is a fallback when full TF-IDF scoring isn't available
650
+ */
651
+ calculateSimpleScore(query, record, fields) {
652
+ const queryTerms = query.toLowerCase().split(/\s+/);
653
+ const searchFields = fields || Object.keys(record);
654
+ let score = 0;
655
+ let maxScore = 0;
656
+ for (const field of searchFields) {
657
+ const fieldValue = record[field];
658
+ if (!fieldValue || typeof fieldValue !== 'string') {
659
+ continue;
660
+ }
661
+ const lowerValue = fieldValue.toLowerCase();
662
+ maxScore += queryTerms.length;
663
+ for (const term of queryTerms) {
664
+ if (lowerValue.includes(term)) {
665
+ score += 1;
666
+ // Bonus for exact word match
667
+ const wordBoundaryRegex = new RegExp(`\\b${term}\\b`, 'i');
668
+ if (wordBoundaryRegex.test(fieldValue)) {
669
+ score += 0.5;
670
+ }
671
+ }
672
+ }
673
+ }
674
+ return maxScore > 0 ? score / maxScore : 0;
675
+ }
676
+ /**
677
+ * Detect the primary key field name for this table
678
+ * Returns 'id', '{table}_id', or first field ending in '_id'
679
+ */
680
+ detectIdField() {
681
+ // Default to 'id'
682
+ // In a real implementation, this should query the schema
683
+ // For now, try common patterns
684
+ const singularTable = this.tableName.replace(/s$/, ''); // services → service
685
+ return `${singularTable}_id`;
686
+ }
384
687
  }
385
688
  exports.TableOperationsImpl = TableOperationsImpl;
386
689
  //# sourceMappingURL=operations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/query/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/query/operations.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,40 @@
1
1
  import { QueryMetadata, QueryTracker } from '../types/query';
2
+ export interface QueryMetrics {
3
+ totalQueries: number;
4
+ queriesByTable: Record<string, number>;
5
+ queriesByOperation: Record<string, number>;
6
+ avgDuration: number;
7
+ minDuration: number;
8
+ maxDuration: number;
9
+ slowQueries: Array<{
10
+ query: string;
11
+ duration: number;
12
+ timestamp: Date;
13
+ tableName?: string;
14
+ }>;
15
+ errorRate: number;
16
+ totalErrors: number;
17
+ }
2
18
  export declare class InMemoryQueryTracker implements QueryTracker {
3
19
  private queries;
4
20
  private allQueries;
21
+ private slowQueryThreshold;
22
+ constructor(slowQueryThreshold?: number);
5
23
  trackQuery(metadata: QueryMetadata): void;
6
24
  getQueries(correlationId?: string): QueryMetadata[];
7
25
  clearQueries(correlationId?: string): void;
26
+ /**
27
+ * Get aggregated query metrics
28
+ */
29
+ getMetrics(): QueryMetrics;
30
+ /**
31
+ * Reset all tracked queries and metrics
32
+ */
33
+ reset(): void;
34
+ /**
35
+ * Set slow query threshold in milliseconds
36
+ */
37
+ setSlowQueryThreshold(ms: number): void;
8
38
  }
9
39
  /**
10
40
  * Generates a unique ID using crypto.randomUUID (Node 14.17+) or fallback
@@ -1 +1 @@
1
- {"version":3,"file":"query-tracker.d.ts","sourceRoot":"","sources":["../../src/query/query-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG7D,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,UAAU,CAAuB;IAEzC,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAUzC,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAOnD,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CAW3C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAUxC"}
1
+ {"version":3,"file":"query-tracker.d.ts","sourceRoot":"","sources":["../../src/query/query-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG7D,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,IAAI,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,kBAAkB,CAAgB;gBAE9B,kBAAkB,GAAE,MAAa;IAI7C,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAUzC,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAOnD,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAY1C;;OAEG;IACH,UAAU,IAAI,YAAY;IAqF1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGxC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAUxC"}
@@ -37,9 +37,11 @@ exports.InMemoryQueryTracker = void 0;
37
37
  exports.generateQueryId = generateQueryId;
38
38
  const crypto = __importStar(require("crypto"));
39
39
  class InMemoryQueryTracker {
40
- constructor() {
40
+ constructor(slowQueryThreshold = 1000) {
41
41
  this.queries = new Map();
42
42
  this.allQueries = [];
43
+ this.slowQueryThreshold = 1000; // ms
44
+ this.slowQueryThreshold = slowQueryThreshold;
43
45
  }
44
46
  trackQuery(metadata) {
45
47
  this.allQueries.push(metadata);
@@ -65,6 +67,89 @@ class InMemoryQueryTracker {
65
67
  this.allQueries = [];
66
68
  }
67
69
  }
70
+ /**
71
+ * Get aggregated query metrics
72
+ */
73
+ getMetrics() {
74
+ const totalQueries = this.allQueries.length;
75
+ if (totalQueries === 0) {
76
+ return {
77
+ totalQueries: 0,
78
+ queriesByTable: {},
79
+ queriesByOperation: {},
80
+ avgDuration: 0,
81
+ minDuration: 0,
82
+ maxDuration: 0,
83
+ slowQueries: [],
84
+ errorRate: 0,
85
+ totalErrors: 0,
86
+ };
87
+ }
88
+ const queriesByTable = {};
89
+ const queriesByOperation = {};
90
+ const durations = [];
91
+ const slowQueries = [];
92
+ let totalErrors = 0;
93
+ for (const query of this.allQueries) {
94
+ // Count by table
95
+ if (query.tableName) {
96
+ queriesByTable[query.tableName] = (queriesByTable[query.tableName] || 0) + 1;
97
+ }
98
+ // Count by operation
99
+ if (query.operation) {
100
+ queriesByOperation[query.operation] = (queriesByOperation[query.operation] || 0) + 1;
101
+ }
102
+ // Track durations
103
+ if (query.executionTimeMs !== undefined) {
104
+ durations.push(query.executionTimeMs);
105
+ // Track slow queries
106
+ if (query.executionTimeMs >= this.slowQueryThreshold) {
107
+ slowQueries.push({
108
+ query: query.sql,
109
+ duration: query.executionTimeMs,
110
+ timestamp: new Date(query.startTime),
111
+ tableName: query.tableName,
112
+ });
113
+ }
114
+ }
115
+ // Count errors
116
+ if (query.error) {
117
+ totalErrors++;
118
+ }
119
+ }
120
+ // Calculate duration stats
121
+ const avgDuration = durations.length > 0
122
+ ? durations.reduce((sum, d) => sum + d, 0) / durations.length
123
+ : 0;
124
+ const minDuration = durations.length > 0 ? Math.min(...durations) : 0;
125
+ const maxDuration = durations.length > 0 ? Math.max(...durations) : 0;
126
+ // Sort slow queries by duration (descending)
127
+ slowQueries.sort((a, b) => b.duration - a.duration);
128
+ const errorRate = totalQueries > 0 ? (totalErrors / totalQueries) * 100 : 0;
129
+ return {
130
+ totalQueries,
131
+ queriesByTable,
132
+ queriesByOperation,
133
+ avgDuration,
134
+ minDuration,
135
+ maxDuration,
136
+ slowQueries: slowQueries.slice(0, 10), // Top 10 slow queries
137
+ errorRate,
138
+ totalErrors,
139
+ };
140
+ }
141
+ /**
142
+ * Reset all tracked queries and metrics
143
+ */
144
+ reset() {
145
+ this.clearQueries();
146
+ }
147
+ /**
148
+ * Set slow query threshold in milliseconds
149
+ */
150
+ setSlowQueryThreshold(ms) {
151
+ this.slowQueryThreshold = ms;
152
+ }
68
153
  }
69
154
  exports.InMemoryQueryTracker = InMemoryQueryTracker;
70
155
  /**