@memberjunction/cli 5.4.0 → 5.5.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.
- package/dist/commands/doctor/index.d.ts +12 -0
- package/dist/commands/doctor/index.d.ts.map +1 -0
- package/dist/commands/doctor/index.js +69 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/install/index.d.ts +18 -136
- package/dist/commands/install/index.d.ts.map +1 -1
- package/dist/commands/install/index.js +189 -390
- package/dist/commands/install/index.js.map +1 -1
- package/dist/commands/sql-audit/index.d.ts +25 -0
- package/dist/commands/sql-audit/index.d.ts.map +1 -0
- package/dist/commands/sql-audit/index.js +198 -0
- package/dist/commands/sql-audit/index.js.map +1 -0
- package/dist/commands/sql-convert/index.d.ts +30 -0
- package/dist/commands/sql-convert/index.d.ts.map +1 -0
- package/dist/commands/sql-convert/index.js +128 -0
- package/dist/commands/sql-convert/index.js.map +1 -0
- package/dist/commands/translate-sql/index.d.ts +39 -0
- package/dist/commands/translate-sql/index.d.ts.map +1 -0
- package/dist/commands/translate-sql/index.js +229 -0
- package/dist/commands/translate-sql/index.js.map +1 -0
- package/dist/lib/legacy-install.d.ts +29 -0
- package/dist/lib/legacy-install.d.ts.map +1 -0
- package/dist/lib/legacy-install.js +391 -0
- package/dist/lib/legacy-install.js.map +1 -0
- package/dist/light-commands.d.ts.map +1 -1
- package/dist/light-commands.js +6 -1
- package/dist/light-commands.js.map +1 -1
- package/dist/translate-sql/classifier.d.ts +27 -0
- package/dist/translate-sql/classifier.d.ts.map +1 -0
- package/dist/translate-sql/classifier.js +118 -0
- package/dist/translate-sql/classifier.js.map +1 -0
- package/dist/translate-sql/groundTruth.d.ts +25 -0
- package/dist/translate-sql/groundTruth.d.ts.map +1 -0
- package/dist/translate-sql/groundTruth.js +93 -0
- package/dist/translate-sql/groundTruth.js.map +1 -0
- package/dist/translate-sql/index.d.ts +5 -0
- package/dist/translate-sql/index.d.ts.map +1 -0
- package/dist/translate-sql/index.js +5 -0
- package/dist/translate-sql/index.js.map +1 -0
- package/dist/translate-sql/reportGenerator.d.ts +26 -0
- package/dist/translate-sql/reportGenerator.d.ts.map +1 -0
- package/dist/translate-sql/reportGenerator.js +83 -0
- package/dist/translate-sql/reportGenerator.js.map +1 -0
- package/dist/translate-sql/ruleTranslator.d.ts +21 -0
- package/dist/translate-sql/ruleTranslator.d.ts.map +1 -0
- package/dist/translate-sql/ruleTranslator.js +74 -0
- package/dist/translate-sql/ruleTranslator.js.map +1 -0
- package/oclif.manifest.json +522 -158
- package/package.json +14 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-install.js","sourceRoot":"","sources":["../../src/lib/legacy-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAoC7C,CAAC"}
|
package/dist/light-commands.js
CHANGED
|
@@ -22,13 +22,18 @@ export const LIGHT_COMMANDS = new Set([
|
|
|
22
22
|
// Database commands - use @memberjunction/skyway-core + config only
|
|
23
23
|
'clean',
|
|
24
24
|
'migrate',
|
|
25
|
-
// Install wizard - uses
|
|
25
|
+
// Install wizard - uses @memberjunction/installer engine (lightweight, no bootstrap)
|
|
26
26
|
'install',
|
|
27
|
+
// Doctor - uses @memberjunction/installer engine (lightweight, no bootstrap)
|
|
28
|
+
'doctor',
|
|
27
29
|
// Topic index commands (just display help text, no heavy imports)
|
|
28
30
|
'ai',
|
|
29
31
|
'ai audit',
|
|
30
32
|
'test',
|
|
31
33
|
'dbdoc',
|
|
34
|
+
// SQL conversion commands - use @memberjunction/sql-converter + sqlglot-ts only
|
|
35
|
+
'sql-convert',
|
|
36
|
+
'sql-audit',
|
|
32
37
|
// DBDoc commands - already use dynamic imports internally
|
|
33
38
|
'dbdoc init',
|
|
34
39
|
'dbdoc analyze',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IAET,
|
|
1
|
+
{"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IAET,qFAAqF;IACrF,SAAS;IAET,6EAA6E;IAC7E,QAAQ;IAER,kEAAkE;IAClE,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IAEP,gFAAgF;IAChF,aAAa;IACb,WAAW;IAEX,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DatabasePlatform } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* Classification result for a SQL fragment.
|
|
4
|
+
*/
|
|
5
|
+
export type SQLClassification = 'standard' | 'rule-based' | 'llm-needed';
|
|
6
|
+
/**
|
|
7
|
+
* Classifies a SQL fragment to determine the translation approach needed.
|
|
8
|
+
*
|
|
9
|
+
* @param sql - The SQL fragment to classify
|
|
10
|
+
* @param sourceDialect - The dialect the SQL is written in
|
|
11
|
+
* @returns The classification determining the translation strategy
|
|
12
|
+
*/
|
|
13
|
+
export declare function ClassifySQL(sql: string, sourceDialect: DatabasePlatform): SQLClassification;
|
|
14
|
+
/**
|
|
15
|
+
* Batch classification result.
|
|
16
|
+
*/
|
|
17
|
+
export interface ClassificationResult {
|
|
18
|
+
sql: string;
|
|
19
|
+
classification: SQLClassification;
|
|
20
|
+
/** Specific dialect markers found in the SQL */
|
|
21
|
+
markers: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Classifies multiple SQL fragments and returns detailed results.
|
|
25
|
+
*/
|
|
26
|
+
export declare function ClassifySQLBatch(fragments: string[], sourceDialect: DatabasePlatform): ClassificationResult[];
|
|
27
|
+
//# sourceMappingURL=classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/translate-sql/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AA8CzE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,iBAAiB,CAmB3F;AAuBD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,iBAAiB,CAAC;IAClC,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,gBAAgB,GAChC,oBAAoB,EAAE,CAMxB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns that indicate SQL Server-specific syntax.
|
|
3
|
+
*/
|
|
4
|
+
const SQL_SERVER_PATTERNS = [
|
|
5
|
+
/\[[\w\s]+\]/, // [bracket] identifiers
|
|
6
|
+
/\bTOP\s+\d+/i, // TOP N
|
|
7
|
+
/\bGETUTCDATE\s*\(\)/i, // GETUTCDATE()
|
|
8
|
+
/\bGETDATE\s*\(\)/i, // GETDATE()
|
|
9
|
+
/\bISNULL\s*\(/i, // ISNULL()
|
|
10
|
+
/\bIIF\s*\(/i, // IIF()
|
|
11
|
+
/\bSCOPE_IDENTITY\s*\(\)/i, // SCOPE_IDENTITY()
|
|
12
|
+
/\bNEWID\s*\(\)/i, // NEWID()
|
|
13
|
+
/\bNEWSEQUENTIALID\s*\(\)/i, // NEWSEQUENTIALID()
|
|
14
|
+
/\bDATEADD\s*\(/i, // DATEADD()
|
|
15
|
+
/\bDATEDIFF\s*\(/i, // DATEDIFF()
|
|
16
|
+
/\bCONVERT\s*\(/i, // CONVERT()
|
|
17
|
+
/\bCAST\s*\([^)]+\bAS\s+NVARCHAR/i, // CAST(... AS NVARCHAR...)
|
|
18
|
+
/\bCAST\s*\([^)]+\bAS\s+BIT\b/i, // CAST(... AS BIT)
|
|
19
|
+
/\bBIT\b/i, // BIT type
|
|
20
|
+
/\bUNIQUEIDENTIFIER\b/i, // UNIQUEIDENTIFIER type
|
|
21
|
+
/\bNVARCHAR\b/i, // NVARCHAR type
|
|
22
|
+
/\bDATETIMEOFFSET\b/i, // DATETIMEOFFSET type
|
|
23
|
+
/=\s*1\b/, // = 1 (boolean comparison)
|
|
24
|
+
/=\s*0\b/, // = 0 (boolean comparison)
|
|
25
|
+
/\bEXEC\s+/i, // EXEC stored_proc
|
|
26
|
+
/\+\s*'/, // String concatenation with +
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Patterns that can be translated with simple rules (identifier quoting + boolean literals).
|
|
30
|
+
*/
|
|
31
|
+
const SIMPLE_RULE_PATTERNS = [
|
|
32
|
+
/\[[\w]+\]/, // Simple bracket identifiers (no spaces)
|
|
33
|
+
/=\s*1\b/, // Boolean = 1
|
|
34
|
+
/=\s*0\b/, // Boolean = 0
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Patterns indicating the SQL is standard and cross-platform.
|
|
38
|
+
*/
|
|
39
|
+
const STANDARD_SQL_KEYWORDS = [
|
|
40
|
+
/^[\w\s.,=<>!()'+\-*/%;]+$/, // Only basic characters
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* Classifies a SQL fragment to determine the translation approach needed.
|
|
44
|
+
*
|
|
45
|
+
* @param sql - The SQL fragment to classify
|
|
46
|
+
* @param sourceDialect - The dialect the SQL is written in
|
|
47
|
+
* @returns The classification determining the translation strategy
|
|
48
|
+
*/
|
|
49
|
+
export function ClassifySQL(sql, sourceDialect) {
|
|
50
|
+
if (!sql || sql.trim().length === 0)
|
|
51
|
+
return 'standard';
|
|
52
|
+
const trimmed = sql.trim();
|
|
53
|
+
// Check for dialect-specific patterns
|
|
54
|
+
const dialectPatterns = sourceDialect === 'sqlserver' ? SQL_SERVER_PATTERNS : [];
|
|
55
|
+
const hasDialectSpecific = dialectPatterns.some(p => p.test(trimmed));
|
|
56
|
+
if (!hasDialectSpecific) {
|
|
57
|
+
return 'standard';
|
|
58
|
+
}
|
|
59
|
+
// Check if it's only simple transformations (bracket quoting + boolean literals)
|
|
60
|
+
if (isOnlySimpleTransformations(trimmed, sourceDialect)) {
|
|
61
|
+
return 'rule-based';
|
|
62
|
+
}
|
|
63
|
+
return 'llm-needed';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Checks whether a SQL fragment only needs simple, rule-based transformations.
|
|
67
|
+
* Simple transformations are: bracket→double-quote identifier conversion and 1/0→true/false booleans.
|
|
68
|
+
*/
|
|
69
|
+
function isOnlySimpleTransformations(sql, sourceDialect) {
|
|
70
|
+
if (sourceDialect !== 'sqlserver')
|
|
71
|
+
return false;
|
|
72
|
+
// Remove bracket identifiers and boolean comparisons, then check if anything dialect-specific remains
|
|
73
|
+
let simplified = sql
|
|
74
|
+
.replace(/\[[\w]+\]/g, '__ID__') // Remove simple bracket identifiers
|
|
75
|
+
.replace(/=\s*1\b/g, '= __BOOL__') // Remove boolean = 1
|
|
76
|
+
.replace(/=\s*0\b/g, '= __BOOL__'); // Remove boolean = 0
|
|
77
|
+
// Now check if any complex dialect markers remain
|
|
78
|
+
const complexPatterns = SQL_SERVER_PATTERNS.filter(p => !SIMPLE_RULE_PATTERNS.some(sp => sp.source === p.source));
|
|
79
|
+
return !complexPatterns.some(p => p.test(simplified));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Classifies multiple SQL fragments and returns detailed results.
|
|
83
|
+
*/
|
|
84
|
+
export function ClassifySQLBatch(fragments, sourceDialect) {
|
|
85
|
+
return fragments.map(sql => {
|
|
86
|
+
const classification = ClassifySQL(sql, sourceDialect);
|
|
87
|
+
const markers = findDialectMarkers(sql, sourceDialect);
|
|
88
|
+
return { sql, classification, markers };
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Finds specific dialect markers in a SQL fragment for reporting.
|
|
93
|
+
*/
|
|
94
|
+
function findDialectMarkers(sql, sourceDialect) {
|
|
95
|
+
if (sourceDialect !== 'sqlserver')
|
|
96
|
+
return [];
|
|
97
|
+
const markers = [];
|
|
98
|
+
const tests = [
|
|
99
|
+
[/\[[\w\s]+\]/, 'bracket-identifiers'],
|
|
100
|
+
[/\bTOP\s+\d+/i, 'TOP-N'],
|
|
101
|
+
[/\bGETUTCDATE\s*\(\)/i, 'GETUTCDATE'],
|
|
102
|
+
[/\bGETDATE\s*\(\)/i, 'GETDATE'],
|
|
103
|
+
[/\bISNULL\s*\(/i, 'ISNULL'],
|
|
104
|
+
[/\bIIF\s*\(/i, 'IIF'],
|
|
105
|
+
[/=\s*[10]\b/, 'boolean-literal'],
|
|
106
|
+
[/\+\s*'/i, 'string-concat-plus'],
|
|
107
|
+
[/\bCONVERT\s*\(/i, 'CONVERT'],
|
|
108
|
+
[/\bDATEADD\s*\(/i, 'DATEADD'],
|
|
109
|
+
[/\bDATEDIFF\s*\(/i, 'DATEDIFF'],
|
|
110
|
+
[/\bSCOPE_IDENTITY\s*\(\)/i, 'SCOPE_IDENTITY'],
|
|
111
|
+
];
|
|
112
|
+
for (const [regex, label] of tests) {
|
|
113
|
+
if (regex.test(sql))
|
|
114
|
+
markers.push(label);
|
|
115
|
+
}
|
|
116
|
+
return markers;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/translate-sql/classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DatabasePlatform } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* A single translation example pairing source and target SQL.
|
|
4
|
+
*/
|
|
5
|
+
export interface TranslationExample {
|
|
6
|
+
source: {
|
|
7
|
+
platform: DatabasePlatform;
|
|
8
|
+
sql: string;
|
|
9
|
+
};
|
|
10
|
+
target: {
|
|
11
|
+
platform: DatabasePlatform;
|
|
12
|
+
sql: string;
|
|
13
|
+
};
|
|
14
|
+
category: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Ground truth translation examples for SQL Server ↔ PostgreSQL.
|
|
18
|
+
* Used as few-shot examples in LLM translation prompts.
|
|
19
|
+
*/
|
|
20
|
+
export declare const GROUND_TRUTH_EXAMPLES: TranslationExample[];
|
|
21
|
+
/**
|
|
22
|
+
* Builds LLM prompt sections from ground truth examples for a given dialect pair.
|
|
23
|
+
*/
|
|
24
|
+
export declare function BuildGroundTruthPromptSection(from: DatabasePlatform, to: DatabasePlatform, maxExamples?: number): string;
|
|
25
|
+
//# sourceMappingURL=groundTruth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groundTruth.d.ts","sourceRoot":"","sources":["../../src/translate-sql/groundTruth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAyErD,CAAC;AAEF;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,EACpB,WAAW,GAAE,MAAU,GACxB,MAAM,CAcR"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ground truth translation examples for SQL Server ↔ PostgreSQL.
|
|
3
|
+
* Used as few-shot examples in LLM translation prompts.
|
|
4
|
+
*/
|
|
5
|
+
export const GROUND_TRUTH_EXAMPLES = [
|
|
6
|
+
// Identifier quoting
|
|
7
|
+
{
|
|
8
|
+
source: { platform: 'sqlserver', sql: "[Status] = 'Active' AND [Name] LIKE 'J%'" },
|
|
9
|
+
target: { platform: 'postgresql', sql: '"Status" = \'Active\' AND "Name" LIKE \'J%\'' },
|
|
10
|
+
category: 'identifier-quoting'
|
|
11
|
+
},
|
|
12
|
+
// Boolean literals
|
|
13
|
+
{
|
|
14
|
+
source: { platform: 'sqlserver', sql: "[IsActive] = 1 AND [IsAdmin] = 0" },
|
|
15
|
+
target: { platform: 'postgresql', sql: '"IsActive" = true AND "IsAdmin" = false' },
|
|
16
|
+
category: 'boolean-literal'
|
|
17
|
+
},
|
|
18
|
+
// TOP → LIMIT
|
|
19
|
+
{
|
|
20
|
+
source: { platform: 'sqlserver', sql: "SELECT TOP 10 [Name], [Email] FROM [__mj].[vwUsers] WHERE [IsActive] = 1 ORDER BY [Name]" },
|
|
21
|
+
target: { platform: 'postgresql', sql: 'SELECT "Name", "Email" FROM __mj."vwUsers" WHERE "IsActive" = true ORDER BY "Name" LIMIT 10' },
|
|
22
|
+
category: 'top-to-limit'
|
|
23
|
+
},
|
|
24
|
+
// GETUTCDATE → NOW()
|
|
25
|
+
{
|
|
26
|
+
source: { platform: 'sqlserver', sql: "[CreatedAt] > GETUTCDATE() - 30" },
|
|
27
|
+
target: { platform: 'postgresql', sql: '"CreatedAt" > NOW() - INTERVAL \'30 days\'' },
|
|
28
|
+
category: 'date-function'
|
|
29
|
+
},
|
|
30
|
+
// ISNULL → COALESCE
|
|
31
|
+
{
|
|
32
|
+
source: { platform: 'sqlserver', sql: "ISNULL([MiddleName], '') + ' ' + [LastName]" },
|
|
33
|
+
target: { platform: 'postgresql', sql: "COALESCE(\"MiddleName\", '') || ' ' || \"LastName\"" },
|
|
34
|
+
category: 'null-function'
|
|
35
|
+
},
|
|
36
|
+
// String concatenation (+ → ||)
|
|
37
|
+
{
|
|
38
|
+
source: { platform: 'sqlserver', sql: "[FirstName] + ' ' + [LastName]" },
|
|
39
|
+
target: { platform: 'postgresql', sql: '"FirstName" || \' \' || "LastName"' },
|
|
40
|
+
category: 'string-concat'
|
|
41
|
+
},
|
|
42
|
+
// CONVERT → CAST
|
|
43
|
+
{
|
|
44
|
+
source: { platform: 'sqlserver', sql: "CONVERT(NVARCHAR(50), [Price])" },
|
|
45
|
+
target: { platform: 'postgresql', sql: 'CAST("Price" AS VARCHAR(50))' },
|
|
46
|
+
category: 'type-conversion'
|
|
47
|
+
},
|
|
48
|
+
// IIF → CASE
|
|
49
|
+
{
|
|
50
|
+
source: { platform: 'sqlserver', sql: "IIF([Status] = 1, 'Active', 'Inactive')" },
|
|
51
|
+
target: { platform: 'postgresql', sql: "CASE WHEN \"Status\" = true THEN 'Active' ELSE 'Inactive' END" },
|
|
52
|
+
category: 'conditional'
|
|
53
|
+
},
|
|
54
|
+
// DATEADD → interval arithmetic
|
|
55
|
+
{
|
|
56
|
+
source: { platform: 'sqlserver', sql: "DATEADD(day, -7, GETUTCDATE())" },
|
|
57
|
+
target: { platform: 'postgresql', sql: "NOW() - INTERVAL '7 days'" },
|
|
58
|
+
category: 'date-arithmetic'
|
|
59
|
+
},
|
|
60
|
+
// DATEDIFF → EXTRACT/date_part
|
|
61
|
+
{
|
|
62
|
+
source: { platform: 'sqlserver', sql: "DATEDIFF(day, [StartDate], [EndDate])" },
|
|
63
|
+
target: { platform: 'postgresql', sql: 'EXTRACT(DAY FROM ("EndDate" - "StartDate"))::integer' },
|
|
64
|
+
category: 'date-diff'
|
|
65
|
+
},
|
|
66
|
+
// Schema-qualified with brackets
|
|
67
|
+
{
|
|
68
|
+
source: { platform: 'sqlserver', sql: "SELECT * FROM [__mj].[vwEntities] WHERE [SchemaName] = '__mj'" },
|
|
69
|
+
target: { platform: 'postgresql', sql: 'SELECT * FROM __mj."vwEntities" WHERE "SchemaName" = \'__mj\'' },
|
|
70
|
+
category: 'schema-qualified'
|
|
71
|
+
},
|
|
72
|
+
// Complex WHERE clause
|
|
73
|
+
{
|
|
74
|
+
source: { platform: 'sqlserver', sql: "[EntityID] IN (SELECT [ID] FROM [__mj].[vwEntities] WHERE [IncludeInAPI] = 1)" },
|
|
75
|
+
target: { platform: 'postgresql', sql: '"EntityID" IN (SELECT "ID" FROM __mj."vwEntities" WHERE "IncludeInAPI" = true)' },
|
|
76
|
+
category: 'subquery'
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
/**
|
|
80
|
+
* Builds LLM prompt sections from ground truth examples for a given dialect pair.
|
|
81
|
+
*/
|
|
82
|
+
export function BuildGroundTruthPromptSection(from, to, maxExamples = 8) {
|
|
83
|
+
const relevant = GROUND_TRUTH_EXAMPLES
|
|
84
|
+
.filter(e => e.source.platform === from && e.target.platform === to)
|
|
85
|
+
.slice(0, maxExamples);
|
|
86
|
+
if (relevant.length === 0)
|
|
87
|
+
return '';
|
|
88
|
+
const lines = relevant.map((ex, i) => `Example ${i + 1} (${ex.category}):\n` +
|
|
89
|
+
` Source (${from}): ${ex.source.sql}\n` +
|
|
90
|
+
` Target (${to}): ${ex.target.sql}`);
|
|
91
|
+
return `## Translation Examples\n\n${lines.join('\n\n')}`;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=groundTruth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groundTruth.js","sourceRoot":"","sources":["../../src/translate-sql/groundTruth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SQLClassification, ClassifySQL, ClassifySQLBatch, ClassificationResult } from './classifier.js';
|
|
2
|
+
export { RuleBasedTranslate, RuleTranslationResult } from './ruleTranslator.js';
|
|
3
|
+
export { GROUND_TRUTH_EXAMPLES, BuildGroundTruthPromptSection, TranslationExample } from './groundTruth.js';
|
|
4
|
+
export { GenerateTranslationReport, TranslationReportItem } from './reportGenerator.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/translate-sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ClassifySQL, ClassifySQLBatch } from './classifier.js';
|
|
2
|
+
export { RuleBasedTranslate } from './ruleTranslator.js';
|
|
3
|
+
export { GROUND_TRUTH_EXAMPLES, BuildGroundTruthPromptSection } from './groundTruth.js';
|
|
4
|
+
export { GenerateTranslationReport } from './reportGenerator.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/translate-sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,gBAAgB,EAAwB,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAyB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAsB,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAyB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DatabasePlatform } from '@memberjunction/core';
|
|
2
|
+
import { SQLClassification } from './classifier.js';
|
|
3
|
+
/**
|
|
4
|
+
* A single translation item for the report.
|
|
5
|
+
*/
|
|
6
|
+
export interface TranslationReportItem {
|
|
7
|
+
/** Source identifier (e.g., "Query: User Activity Report") */
|
|
8
|
+
source: string;
|
|
9
|
+
/** The original SQL fragment */
|
|
10
|
+
originalSQL: string;
|
|
11
|
+
/** How the SQL was classified */
|
|
12
|
+
classification: SQLClassification;
|
|
13
|
+
/** The translated SQL (null if not translated) */
|
|
14
|
+
translatedSQL: string | null;
|
|
15
|
+
/** Translation method used */
|
|
16
|
+
method: 'rule-based' | 'llm' | 'skipped' | 'flagged';
|
|
17
|
+
/** Dialect markers found */
|
|
18
|
+
markers: string[];
|
|
19
|
+
/** Any error or note */
|
|
20
|
+
note?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generates a markdown report from translation results.
|
|
24
|
+
*/
|
|
25
|
+
export declare function GenerateTranslationReport(items: TranslationReportItem[], from: DatabasePlatform, to: DatabasePlatform): string;
|
|
26
|
+
//# sourceMappingURL=reportGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/translate-sql/reportGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,cAAc,EAAE,iBAAiB,CAAC;IAClC,kDAAkD;IAClD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8BAA8B;IAC9B,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,qBAAqB,EAAE,EAC9B,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,GACrB,MAAM,CA6ER"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a markdown report from translation results.
|
|
3
|
+
*/
|
|
4
|
+
export function GenerateTranslationReport(items, from, to) {
|
|
5
|
+
const lines = [];
|
|
6
|
+
lines.push(`# SQL Translation Report`);
|
|
7
|
+
lines.push(`**Source dialect:** ${from}`);
|
|
8
|
+
lines.push(`**Target dialect:** ${to}`);
|
|
9
|
+
lines.push(`**Generated at:** ${new Date().toISOString()}`);
|
|
10
|
+
lines.push('');
|
|
11
|
+
// Summary
|
|
12
|
+
const summary = buildSummary(items);
|
|
13
|
+
lines.push(`## Summary`);
|
|
14
|
+
lines.push('');
|
|
15
|
+
lines.push(`| Metric | Count |`);
|
|
16
|
+
lines.push(`|--------|-------|`);
|
|
17
|
+
lines.push(`| Total fragments | ${summary.total} |`);
|
|
18
|
+
lines.push(`| Standard SQL (no translation needed) | ${summary.standard} |`);
|
|
19
|
+
lines.push(`| Rule-based translations | ${summary.ruleBased} |`);
|
|
20
|
+
lines.push(`| LLM translations | ${summary.llm} |`);
|
|
21
|
+
lines.push(`| Flagged for review | ${summary.flagged} |`);
|
|
22
|
+
lines.push('');
|
|
23
|
+
// Details by classification
|
|
24
|
+
if (summary.ruleBased > 0 || summary.llm > 0) {
|
|
25
|
+
lines.push(`## Translations`);
|
|
26
|
+
lines.push('');
|
|
27
|
+
const translated = items.filter(i => i.method === 'rule-based' || i.method === 'llm');
|
|
28
|
+
for (const item of translated) {
|
|
29
|
+
lines.push(`### ${item.source}`);
|
|
30
|
+
lines.push(`**Method:** ${item.method} | **Markers:** ${item.markers.join(', ') || 'none'}`);
|
|
31
|
+
lines.push('');
|
|
32
|
+
lines.push('**Original:**');
|
|
33
|
+
lines.push('```sql');
|
|
34
|
+
lines.push(item.originalSQL);
|
|
35
|
+
lines.push('```');
|
|
36
|
+
lines.push('');
|
|
37
|
+
lines.push('**Translated:**');
|
|
38
|
+
lines.push('```sql');
|
|
39
|
+
lines.push(item.translatedSQL || '-- Translation failed');
|
|
40
|
+
lines.push('```');
|
|
41
|
+
if (item.note) {
|
|
42
|
+
lines.push(`> ${item.note}`);
|
|
43
|
+
}
|
|
44
|
+
lines.push('');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Flagged items
|
|
48
|
+
const flagged = items.filter(i => i.method === 'flagged');
|
|
49
|
+
if (flagged.length > 0) {
|
|
50
|
+
lines.push(`## Flagged for Human Review`);
|
|
51
|
+
lines.push('');
|
|
52
|
+
for (const item of flagged) {
|
|
53
|
+
lines.push(`### ${item.source}`);
|
|
54
|
+
lines.push(`**Markers:** ${item.markers.join(', ')}`);
|
|
55
|
+
lines.push('```sql');
|
|
56
|
+
lines.push(item.originalSQL);
|
|
57
|
+
lines.push('```');
|
|
58
|
+
if (item.note) {
|
|
59
|
+
lines.push(`> ${item.note}`);
|
|
60
|
+
}
|
|
61
|
+
lines.push('');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Standard SQL items (collapsed)
|
|
65
|
+
const standard = items.filter(i => i.classification === 'standard');
|
|
66
|
+
if (standard.length > 0) {
|
|
67
|
+
lines.push(`## Standard SQL (No Translation Needed)`);
|
|
68
|
+
lines.push('');
|
|
69
|
+
lines.push(`${standard.length} fragments are standard SQL and work on both platforms.`);
|
|
70
|
+
lines.push('');
|
|
71
|
+
}
|
|
72
|
+
return lines.join('\n');
|
|
73
|
+
}
|
|
74
|
+
function buildSummary(items) {
|
|
75
|
+
return {
|
|
76
|
+
total: items.length,
|
|
77
|
+
standard: items.filter(i => i.classification === 'standard').length,
|
|
78
|
+
ruleBased: items.filter(i => i.method === 'rule-based').length,
|
|
79
|
+
llm: items.filter(i => i.method === 'llm').length,
|
|
80
|
+
flagged: items.filter(i => i.method === 'flagged').length,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=reportGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportGenerator.js","sourceRoot":"","sources":["../../src/translate-sql/reportGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DatabasePlatform } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* Result of a rule-based SQL translation.
|
|
4
|
+
*/
|
|
5
|
+
export interface RuleTranslationResult {
|
|
6
|
+
success: boolean;
|
|
7
|
+
translatedSQL: string;
|
|
8
|
+
appliedRules: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Translates SQL Server SQL to PostgreSQL using deterministic, rule-based transformations.
|
|
12
|
+
* Only handles simple cases: bracket identifiers → double-quote identifiers,
|
|
13
|
+
* boolean literal 1/0 → true/false.
|
|
14
|
+
*
|
|
15
|
+
* @param sql - The source SQL fragment
|
|
16
|
+
* @param from - The source platform
|
|
17
|
+
* @param to - The target platform
|
|
18
|
+
* @returns The translation result with applied rules
|
|
19
|
+
*/
|
|
20
|
+
export declare function RuleBasedTranslate(sql: string, from: DatabasePlatform, to: DatabasePlatform): RuleTranslationResult;
|
|
21
|
+
//# sourceMappingURL=ruleTranslator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleTranslator.d.ts","sourceRoot":"","sources":["../../src/translate-sql/ruleTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,GACrB,qBAAqB,CAcvB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translates SQL Server SQL to PostgreSQL using deterministic, rule-based transformations.
|
|
3
|
+
* Only handles simple cases: bracket identifiers → double-quote identifiers,
|
|
4
|
+
* boolean literal 1/0 → true/false.
|
|
5
|
+
*
|
|
6
|
+
* @param sql - The source SQL fragment
|
|
7
|
+
* @param from - The source platform
|
|
8
|
+
* @param to - The target platform
|
|
9
|
+
* @returns The translation result with applied rules
|
|
10
|
+
*/
|
|
11
|
+
export function RuleBasedTranslate(sql, from, to) {
|
|
12
|
+
if (from === to) {
|
|
13
|
+
return { success: true, translatedSQL: sql, appliedRules: [] };
|
|
14
|
+
}
|
|
15
|
+
if (from === 'sqlserver' && to === 'postgresql') {
|
|
16
|
+
return translateSqlServerToPostgres(sql);
|
|
17
|
+
}
|
|
18
|
+
if (from === 'postgresql' && to === 'sqlserver') {
|
|
19
|
+
return translatePostgresToSqlServer(sql);
|
|
20
|
+
}
|
|
21
|
+
return { success: false, translatedSQL: sql, appliedRules: [] };
|
|
22
|
+
}
|
|
23
|
+
function translateSqlServerToPostgres(sql) {
|
|
24
|
+
let result = sql;
|
|
25
|
+
const appliedRules = [];
|
|
26
|
+
// Rule 1: Convert [bracket] identifiers to "double-quote" identifiers
|
|
27
|
+
const bracketRegex = /\[(\w+)\]/g;
|
|
28
|
+
if (bracketRegex.test(result)) {
|
|
29
|
+
result = result.replace(/\[(\w+)\]/g, '"$1"');
|
|
30
|
+
appliedRules.push('bracket-to-doublequote');
|
|
31
|
+
}
|
|
32
|
+
// Rule 2: Convert boolean = 1 to = true
|
|
33
|
+
if (/=\s*1\b/.test(result)) {
|
|
34
|
+
result = result.replace(/=\s*1\b/g, '= true');
|
|
35
|
+
appliedRules.push('bit-1-to-true');
|
|
36
|
+
}
|
|
37
|
+
// Rule 3: Convert boolean = 0 to = false
|
|
38
|
+
if (/=\s*0\b/.test(result)) {
|
|
39
|
+
result = result.replace(/=\s*0\b/g, '= false');
|
|
40
|
+
appliedRules.push('bit-0-to-false');
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
success: appliedRules.length > 0,
|
|
44
|
+
translatedSQL: result,
|
|
45
|
+
appliedRules
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function translatePostgresToSqlServer(sql) {
|
|
49
|
+
let result = sql;
|
|
50
|
+
const appliedRules = [];
|
|
51
|
+
// Rule 1: Convert "double-quote" identifiers to [bracket] identifiers
|
|
52
|
+
// Only convert identifiers, not string literals
|
|
53
|
+
const dqRegex = /"(\w+)"/g;
|
|
54
|
+
if (dqRegex.test(result)) {
|
|
55
|
+
result = result.replace(/"(\w+)"/g, '[$1]');
|
|
56
|
+
appliedRules.push('doublequote-to-bracket');
|
|
57
|
+
}
|
|
58
|
+
// Rule 2: Convert = true to = 1
|
|
59
|
+
if (/=\s*true\b/i.test(result)) {
|
|
60
|
+
result = result.replace(/=\s*true\b/gi, '= 1');
|
|
61
|
+
appliedRules.push('true-to-bit-1');
|
|
62
|
+
}
|
|
63
|
+
// Rule 3: Convert = false to = 0
|
|
64
|
+
if (/=\s*false\b/i.test(result)) {
|
|
65
|
+
result = result.replace(/=\s*false\b/gi, '= 0');
|
|
66
|
+
appliedRules.push('false-to-bit-0');
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
success: appliedRules.length > 0,
|
|
70
|
+
translatedSQL: result,
|
|
71
|
+
appliedRules
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=ruleTranslator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleTranslator.js","sourceRoot":"","sources":["../../src/translate-sql/ruleTranslator.ts"],"names":[],"mappings":"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"}
|