@memberjunction/query-gen 5.37.0 → 5.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
 
2
- > @memberjunction/query-gen@5.37.0 build
2
+ > @memberjunction/query-gen@5.39.0 build
3
3
  > tsc && tsc-alias -f
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,60 @@
1
1
  # @memberjunction/query-gen
2
2
 
3
+ ## 5.39.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [361eb4c]
8
+ - Updated dependencies [f4bf584]
9
+ - Updated dependencies [7dfacc7]
10
+ - Updated dependencies [eaee99f]
11
+ - Updated dependencies [3c53858]
12
+ - Updated dependencies [d1cc0ad]
13
+ - Updated dependencies [db4addf]
14
+ - Updated dependencies [8c39dd9]
15
+ - Updated dependencies [0f9acba]
16
+ - Updated dependencies [ae74fd5]
17
+ - Updated dependencies [1b0f355]
18
+ - Updated dependencies [9bc2916]
19
+ - Updated dependencies [34fe6d1]
20
+ - Updated dependencies [a101a34]
21
+ - @memberjunction/core@5.39.0
22
+ - @memberjunction/sqlserver-dataprovider@5.39.0
23
+ - @memberjunction/ai-core-plus@5.39.0
24
+ - @memberjunction/core-entities@5.39.0
25
+ - @memberjunction/ai-prompts@5.39.0
26
+ - @memberjunction/global@5.39.0
27
+ - @memberjunction/ai@5.39.0
28
+ - @memberjunction/aiengine@5.39.0
29
+ - @memberjunction/ai-vectors-memory@5.39.0
30
+
31
+ ## 5.38.0
32
+
33
+ ### Patch Changes
34
+
35
+ - ebb0e3d: Eliminate provider.Refresh() from query save/delete paths, introduce MJQueryEntityExtended with child-relationship getters and business logic, migrate all QueryInfo consumers outside MJCore to use QueryEngine and entity types, remove dead QueryCacheManager, and replace 12 redundant RunView calls with QueryEngine cache reads. Fixes major performance bottleneck on large-entity deployments where every query save reloaded the entire metadata graph.
36
+ - Updated dependencies [6b6c321]
37
+ - Updated dependencies [4ee0b06]
38
+ - Updated dependencies [30f598d]
39
+ - Updated dependencies [748b2e7]
40
+ - Updated dependencies [ce7d2f5]
41
+ - Updated dependencies [275afda]
42
+ - Updated dependencies [8bd97f3]
43
+ - Updated dependencies [6a3ac36]
44
+ - Updated dependencies [c0b40c0]
45
+ - Updated dependencies [d5a51b3]
46
+ - Updated dependencies [3d739a3]
47
+ - Updated dependencies [ebb0e3d]
48
+ - @memberjunction/ai-core-plus@5.38.0
49
+ - @memberjunction/aiengine@5.38.0
50
+ - @memberjunction/core@5.38.0
51
+ - @memberjunction/core-entities@5.38.0
52
+ - @memberjunction/global@5.38.0
53
+ - @memberjunction/sqlserver-dataprovider@5.38.0
54
+ - @memberjunction/ai-prompts@5.38.0
55
+ - @memberjunction/ai-vectors-memory@5.38.0
56
+ - @memberjunction/ai@5.38.0
57
+
3
58
  ## 5.37.0
4
59
 
5
60
  ### Patch Changes
@@ -10,8 +10,9 @@ import ora from 'ora';
10
10
  import chalk from 'chalk';
11
11
  import * as fs from 'fs';
12
12
  import * as path from 'path';
13
- import { Metadata, RunView } from '@memberjunction/core';
13
+ import { Metadata } from '@memberjunction/core';
14
14
  import { getSystemUser } from '../../utils/user-helpers.js';
15
+ import { QueryEngine } from '@memberjunction/core-entities';
15
16
  import { extractErrorMessage } from '../../utils/error-handlers.js';
16
17
  /**
17
18
  * Execute the export command
@@ -34,7 +35,7 @@ export async function exportCommand(options) {
34
35
  spinner.succeed('Metadata loaded');
35
36
  // 3. Load queries from database
36
37
  spinner.start('Loading queries from database...');
37
- const queries = await loadQueriesFromDatabase(contextUser);
38
+ const queries = loadQueriesFromDatabase(contextUser);
38
39
  spinner.succeed(chalk.green(`Found ${queries.length} queries`));
39
40
  // 4. Create output directory if it doesn't exist
40
41
  if (!fs.existsSync(outputPath)) {
@@ -99,20 +100,10 @@ export async function exportCommand(options) {
99
100
  }
100
101
  }
101
102
  /**
102
- * Load all queries from the database
103
+ * Load all queries from QueryEngine's cache (already sorted by Name via BaseEngine)
103
104
  */
104
- async function loadQueriesFromDatabase(contextUser) {
105
- const rv = new RunView();
106
- const result = await rv.RunView({
107
- EntityName: 'MJ: Queries',
108
- ExtraFilter: '',
109
- OrderBy: 'Name',
110
- ResultType: 'entity_object',
111
- }, contextUser);
112
- if (!result.Success) {
113
- throw new Error(`Failed to load queries: ${result.ErrorMessage}`);
114
- }
115
- return result.Results || [];
105
+ function loadQueriesFromDatabase(_contextUser) {
106
+ return [...QueryEngine.Instance.Queries].sort((a, b) => a.Name.localeCompare(b.Name));
116
107
  }
117
108
  /**
118
109
  * Convert MJQueryEntity to metadata record format
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryDatabaseWriter.d.ts","sourceRoot":"","sources":["../../src/core/QueryDatabaseWriter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA2C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKzF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAkC;;IAKvD;;;;;;;;;;;;;;OAcG;IACG,sBAAsB,CAC1B,gBAAgB,EAAE,cAAc,EAAE,EAClC,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC,WAAW,CAAC;IA4CvB;;;;OAIG;YACW,aAAa;IAmC3B;;;;;;;;;;OAUG;YACW,oBAAoB;CA8CnC"}
1
+ {"version":3,"file":"QueryDatabaseWriter.d.ts","sourceRoot":"","sources":["../../src/core/QueryDatabaseWriter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAkC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMhF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAkC;;IAKvD;;;;;;;;;;;;;;OAcG;IACG,sBAAsB,CAC1B,gBAAgB,EAAE,cAAc,EAAE,EAClC,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC,WAAW,CAAC;IA4CvB;;;;OAIG;YACW,aAAa;IAmC3B;;;;;;;;;;OAUG;YACW,oBAAoB;CAoCnC"}
@@ -5,7 +5,8 @@
5
5
  * are automatically extracted by MJQueryEntity.server.ts using AI analysis
6
6
  * of the SQL template during the Save() operation.
7
7
  */
8
- import { Metadata, RunView } from '@memberjunction/core';
8
+ import { Metadata } from '@memberjunction/core';
9
+ import { QueryEngine } from '@memberjunction/core-entities';
9
10
  import { extractErrorMessage } from '../utils/error-handlers.js';
10
11
  /**
11
12
  * QueryDatabaseWriter class
@@ -109,26 +110,19 @@ export class QueryDatabaseWriter {
109
110
  * @returns Category ID
110
111
  */
111
112
  async findOrCreateCategory(categoryName, parentCategoryId, description, contextUser) {
112
- const rv = new RunView();
113
- // Build filter to match both name and parent
114
- let filter = `Name='${categoryName.replace(/'/g, "''")}'`;
115
- if (parentCategoryId) {
116
- filter += ` AND ParentID='${parentCategoryId}'`;
117
- }
118
- else {
119
- filter += ` AND ParentID IS NULL`;
120
- }
121
- const result = await rv.RunView({
122
- EntityName: 'MJ: Query Categories',
123
- ExtraFilter: filter,
124
- ResultType: 'entity_object'
125
- }, contextUser);
126
- if (!result.Success) {
127
- throw new Error(`Failed to search for category: ${result.ErrorMessage}`);
128
- }
113
+ // Look up from QueryEngine's cached categories instead of hitting the DB
114
+ const nameLower = categoryName.trim().toLowerCase();
115
+ const existing = QueryEngine.Instance.Categories.find(c => {
116
+ if (c.Name.trim().toLowerCase() !== nameLower)
117
+ return false;
118
+ if (parentCategoryId) {
119
+ return c.ParentID?.trim().toLowerCase() === parentCategoryId.trim().toLowerCase();
120
+ }
121
+ return c.ParentID == null;
122
+ });
129
123
  // If found, return existing category ID
130
- if (result.Results && result.Results.length > 0) {
131
- return result.Results[0].ID;
124
+ if (existing) {
125
+ return existing.ID;
132
126
  }
133
127
  // Category doesn't exist, create it
134
128
  const md = new Metadata(); // global-provider-ok: query generation reads schema globally
@@ -1 +1 @@
1
- {"version":3,"file":"QueryDatabaseWriter.js","sourceRoot":"","sources":["../../src/core/QueryDatabaseWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryDatabaseWriter.js","sourceRoot":"","sources":["../../src/core/QueryDatabaseWriter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/query-gen",
3
3
  "type": "module",
4
- "version": "5.37.0",
4
+ "version": "5.39.0",
5
5
  "description": "AI-powered generation of domain-specific SQL query templates with automatic testing, refinement, and metadata export",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -28,15 +28,15 @@
28
28
  "author": "MemberJunction",
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "@memberjunction/ai": "5.37.0",
32
- "@memberjunction/ai-core-plus": "5.37.0",
33
- "@memberjunction/aiengine": "5.37.0",
34
- "@memberjunction/ai-prompts": "5.37.0",
35
- "@memberjunction/ai-vectors-memory": "5.37.0",
36
- "@memberjunction/core": "5.37.0",
37
- "@memberjunction/core-entities": "5.37.0",
38
- "@memberjunction/global": "5.37.0",
39
- "@memberjunction/sqlserver-dataprovider": "5.37.0",
31
+ "@memberjunction/ai": "5.39.0",
32
+ "@memberjunction/ai-core-plus": "5.39.0",
33
+ "@memberjunction/aiengine": "5.39.0",
34
+ "@memberjunction/ai-prompts": "5.39.0",
35
+ "@memberjunction/ai-vectors-memory": "5.39.0",
36
+ "@memberjunction/core": "5.39.0",
37
+ "@memberjunction/core-entities": "5.39.0",
38
+ "@memberjunction/global": "5.39.0",
39
+ "@memberjunction/sqlserver-dataprovider": "5.39.0",
40
40
  "chalk": "^5.6.2",
41
41
  "commander": "^14.0.3",
42
42
  "nunjucks": "^3.2.4",
@@ -11,9 +11,9 @@ import ora from 'ora';
11
11
  import chalk from 'chalk';
12
12
  import * as fs from 'fs';
13
13
  import * as path from 'path';
14
- import { Metadata, RunView, UserInfo } from '@memberjunction/core';
14
+ import { Metadata, UserInfo } from '@memberjunction/core';
15
15
  import { getSystemUser } from '../../utils/user-helpers';
16
- import { MJQueryEntity } from '@memberjunction/core-entities';
16
+ import { MJQueryEntity, QueryEngine } from '@memberjunction/core-entities';
17
17
  import { extractErrorMessage } from '../../utils/error-handlers';
18
18
  import { QueryMetadataRecord } from '../../data/schema';
19
19
 
@@ -42,7 +42,7 @@ export async function exportCommand(options: Record<string, unknown>): Promise<v
42
42
 
43
43
  // 3. Load queries from database
44
44
  spinner.start('Loading queries from database...');
45
- const queries = await loadQueriesFromDatabase(contextUser);
45
+ const queries = loadQueriesFromDatabase(contextUser);
46
46
  spinner.succeed(chalk.green(`Found ${queries.length} queries`));
47
47
 
48
48
  // 4. Create output directory if it doesn't exist
@@ -115,25 +115,10 @@ export async function exportCommand(options: Record<string, unknown>): Promise<v
115
115
  }
116
116
 
117
117
  /**
118
- * Load all queries from the database
118
+ * Load all queries from QueryEngine's cache (already sorted by Name via BaseEngine)
119
119
  */
120
- async function loadQueriesFromDatabase(contextUser: UserInfo): Promise<MJQueryEntity[]> {
121
- const rv = new RunView();
122
- const result = await rv.RunView<MJQueryEntity>(
123
- {
124
- EntityName: 'MJ: Queries',
125
- ExtraFilter: '',
126
- OrderBy: 'Name',
127
- ResultType: 'entity_object',
128
- },
129
- contextUser
130
- );
131
-
132
- if (!result.Success) {
133
- throw new Error(`Failed to load queries: ${result.ErrorMessage}`);
134
- }
135
-
136
- return result.Results || [];
120
+ function loadQueriesFromDatabase(_contextUser: UserInfo): MJQueryEntity[] {
121
+ return [...QueryEngine.Instance.Queries].sort((a, b) => a.Name.localeCompare(b.Name));
137
122
  }
138
123
 
139
124
  /**
@@ -6,10 +6,11 @@
6
6
  * of the SQL template during the Save() operation.
7
7
  */
8
8
 
9
- import { DatabaseProviderBase, Metadata, RunView, UserInfo } from '@memberjunction/core';
9
+ import { DatabaseProviderBase, Metadata, UserInfo } from '@memberjunction/core';
10
10
  import {
11
11
  MJQueryEntity,
12
- MJQueryCategoryEntity
12
+ MJQueryCategoryEntity,
13
+ QueryEngine
13
14
  } from '@memberjunction/core-entities';
14
15
  import { ValidatedQuery, WriteResult } from '../data/schema';
15
16
  import { extractErrorMessage } from '../utils/error-handlers';
@@ -143,29 +144,19 @@ export class QueryDatabaseWriter {
143
144
  description: string,
144
145
  contextUser: UserInfo
145
146
  ): Promise<string> {
146
- const rv = new RunView();
147
-
148
- // Build filter to match both name and parent
149
- let filter = `Name='${categoryName.replace(/'/g, "''")}'`;
150
- if (parentCategoryId) {
151
- filter += ` AND ParentID='${parentCategoryId}'`;
152
- } else {
153
- filter += ` AND ParentID IS NULL`;
154
- }
155
-
156
- const result = await rv.RunView<MJQueryCategoryEntity>({
157
- EntityName: 'MJ: Query Categories',
158
- ExtraFilter: filter,
159
- ResultType: 'entity_object'
160
- }, contextUser);
161
-
162
- if (!result.Success) {
163
- throw new Error(`Failed to search for category: ${result.ErrorMessage}`);
164
- }
147
+ // Look up from QueryEngine's cached categories instead of hitting the DB
148
+ const nameLower = categoryName.trim().toLowerCase();
149
+ const existing = QueryEngine.Instance.Categories.find(c => {
150
+ if (c.Name.trim().toLowerCase() !== nameLower) return false;
151
+ if (parentCategoryId) {
152
+ return c.ParentID?.trim().toLowerCase() === parentCategoryId.trim().toLowerCase();
153
+ }
154
+ return c.ParentID == null;
155
+ });
165
156
 
166
157
  // If found, return existing category ID
167
- if (result.Results && result.Results.length > 0) {
168
- return result.Results[0].ID;
158
+ if (existing) {
159
+ return existing.ID;
169
160
  }
170
161
 
171
162
  // Category doesn't exist, create it