@memberjunction/db-auto-doc 2.117.0 → 2.118.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/README.md +652 -165
- package/bin/run.js +7 -0
- package/dist/api/DBAutoDocAPI.d.ts +252 -0
- package/dist/api/DBAutoDocAPI.d.ts.map +1 -0
- package/dist/api/DBAutoDocAPI.js +530 -0
- package/dist/api/DBAutoDocAPI.js.map +1 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +10 -0
- package/dist/api/index.js.map +1 -0
- package/dist/commands/analyze.d.ts +6 -4
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +58 -71
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/export.d.ts +14 -4
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +156 -61
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/init.d.ts +3 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +155 -146
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/reset.d.ts +4 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +33 -19
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +66 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/AnalysisEngine.d.ts +108 -0
- package/dist/core/AnalysisEngine.d.ts.map +1 -0
- package/dist/core/AnalysisEngine.js +716 -0
- package/dist/core/AnalysisEngine.js.map +1 -0
- package/dist/core/AnalysisOrchestrator.d.ts +37 -0
- package/dist/core/AnalysisOrchestrator.d.ts.map +1 -0
- package/dist/core/AnalysisOrchestrator.js +294 -0
- package/dist/core/AnalysisOrchestrator.js.map +1 -0
- package/dist/core/BackpropagationEngine.d.ts +32 -0
- package/dist/core/BackpropagationEngine.d.ts.map +1 -0
- package/dist/core/BackpropagationEngine.js +121 -0
- package/dist/core/BackpropagationEngine.js.map +1 -0
- package/dist/core/ConvergenceDetector.d.ts +27 -0
- package/dist/core/ConvergenceDetector.d.ts.map +1 -0
- package/dist/core/ConvergenceDetector.js +92 -0
- package/dist/core/ConvergenceDetector.js.map +1 -0
- package/dist/core/GuardrailsManager.d.ts +78 -0
- package/dist/core/GuardrailsManager.d.ts.map +1 -0
- package/dist/core/GuardrailsManager.js +367 -0
- package/dist/core/GuardrailsManager.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/database/Database.d.ts +56 -0
- package/dist/database/Database.d.ts.map +1 -0
- package/dist/database/Database.js +172 -0
- package/dist/database/Database.js.map +1 -0
- package/dist/database/TopologicalSorter.d.ts +25 -0
- package/dist/database/TopologicalSorter.d.ts.map +1 -0
- package/dist/database/TopologicalSorter.js +150 -0
- package/dist/database/TopologicalSorter.js.map +1 -0
- package/dist/database/index.d.ts +6 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +14 -0
- package/dist/database/index.js.map +1 -0
- package/dist/discovery/ColumnStatsCache.d.ts +91 -0
- package/dist/discovery/ColumnStatsCache.d.ts.map +1 -0
- package/dist/discovery/ColumnStatsCache.js +231 -0
- package/dist/discovery/ColumnStatsCache.js.map +1 -0
- package/dist/discovery/DiscoveryEngine.d.ts +100 -0
- package/dist/discovery/DiscoveryEngine.d.ts.map +1 -0
- package/dist/discovery/DiscoveryEngine.js +726 -0
- package/dist/discovery/DiscoveryEngine.js.map +1 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts +57 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts.map +1 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.js +186 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.js.map +1 -0
- package/dist/discovery/FKDetector.d.ts +47 -0
- package/dist/discovery/FKDetector.d.ts.map +1 -0
- package/dist/discovery/FKDetector.js +317 -0
- package/dist/discovery/FKDetector.js.map +1 -0
- package/dist/discovery/LLMDiscoveryValidator.d.ts +64 -0
- package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -0
- package/dist/discovery/LLMDiscoveryValidator.js +431 -0
- package/dist/discovery/LLMDiscoveryValidator.js.map +1 -0
- package/dist/discovery/LLMSanityChecker.d.ts +38 -0
- package/dist/discovery/LLMSanityChecker.d.ts.map +1 -0
- package/dist/discovery/LLMSanityChecker.js +156 -0
- package/dist/discovery/LLMSanityChecker.js.map +1 -0
- package/dist/discovery/PKDetector.d.ts +62 -0
- package/dist/discovery/PKDetector.d.ts.map +1 -0
- package/dist/discovery/PKDetector.js +436 -0
- package/dist/discovery/PKDetector.js.map +1 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +25 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/drivers/BaseAutoDocDriver.d.ts +132 -0
- package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -0
- package/dist/drivers/BaseAutoDocDriver.js +121 -0
- package/dist/drivers/BaseAutoDocDriver.js.map +1 -0
- package/dist/drivers/MySQLDriver.d.ts +61 -0
- package/dist/drivers/MySQLDriver.d.ts.map +1 -0
- package/dist/drivers/MySQLDriver.js +668 -0
- package/dist/drivers/MySQLDriver.js.map +1 -0
- package/dist/drivers/PostgreSQLDriver.d.ts +65 -0
- package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -0
- package/dist/drivers/PostgreSQLDriver.js +704 -0
- package/dist/drivers/PostgreSQLDriver.js.map +1 -0
- package/dist/drivers/SQLServerDriver.d.ts +61 -0
- package/dist/drivers/SQLServerDriver.d.ts.map +1 -0
- package/dist/drivers/SQLServerDriver.js +667 -0
- package/dist/drivers/SQLServerDriver.js.map +1 -0
- package/dist/generators/CSVGenerator.d.ts +35 -0
- package/dist/generators/CSVGenerator.d.ts.map +1 -0
- package/dist/generators/CSVGenerator.js +154 -0
- package/dist/generators/CSVGenerator.js.map +1 -0
- package/dist/generators/HTMLGenerator.d.ts +29 -0
- package/dist/generators/HTMLGenerator.d.ts.map +1 -0
- package/dist/generators/HTMLGenerator.js +710 -0
- package/dist/generators/HTMLGenerator.js.map +1 -0
- package/dist/generators/MarkdownGenerator.d.ts +27 -0
- package/dist/generators/MarkdownGenerator.d.ts.map +1 -0
- package/dist/generators/MarkdownGenerator.js +361 -0
- package/dist/generators/MarkdownGenerator.js.map +1 -0
- package/dist/generators/MermaidGenerator.d.ts +35 -0
- package/dist/generators/MermaidGenerator.d.ts.map +1 -0
- package/dist/generators/MermaidGenerator.js +321 -0
- package/dist/generators/MermaidGenerator.js.map +1 -0
- package/dist/generators/ReportGenerator.d.ts +22 -0
- package/dist/generators/ReportGenerator.d.ts.map +1 -0
- package/dist/generators/ReportGenerator.js +176 -0
- package/dist/generators/ReportGenerator.js.map +1 -0
- package/dist/generators/SQLGenerator.d.ts +31 -0
- package/dist/generators/SQLGenerator.d.ts.map +1 -0
- package/dist/generators/SQLGenerator.js +168 -0
- package/dist/generators/SQLGenerator.js.map +1 -0
- package/dist/generators/index.d.ts +10 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +19 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +11 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -20
- package/dist/index.js.map +1 -1
- package/dist/prompts/PromptEngine.d.ts +65 -0
- package/dist/prompts/PromptEngine.d.ts.map +1 -0
- package/dist/prompts/PromptEngine.js +282 -0
- package/dist/prompts/PromptEngine.js.map +1 -0
- package/dist/prompts/PromptFileLoader.d.ts +21 -0
- package/dist/prompts/PromptFileLoader.d.ts.map +1 -0
- package/dist/prompts/PromptFileLoader.js +74 -0
- package/dist/prompts/PromptFileLoader.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +11 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/state/IterationTracker.d.ts +64 -0
- package/dist/state/IterationTracker.d.ts.map +1 -0
- package/dist/state/IterationTracker.js +136 -0
- package/dist/state/IterationTracker.js.map +1 -0
- package/dist/state/StateManager.d.ts +79 -0
- package/dist/state/StateManager.d.ts.map +1 -0
- package/dist/state/StateManager.js +348 -0
- package/dist/state/StateManager.js.map +1 -0
- package/dist/state/StateValidator.d.ts +24 -0
- package/dist/state/StateValidator.d.ts.map +1 -0
- package/dist/state/StateValidator.js +147 -0
- package/dist/state/StateValidator.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +13 -0
- package/dist/state/index.js.map +1 -0
- package/dist/types/analysis.d.ts +76 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +6 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +132 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/discovery.d.ts +277 -0
- package/dist/types/discovery.d.ts.map +1 -0
- package/dist/types/discovery.js +7 -0
- package/dist/types/discovery.js.map +1 -0
- package/dist/types/driver.d.ts +148 -0
- package/dist/types/driver.d.ts.map +1 -0
- package/dist/types/driver.js +7 -0
- package/dist/types/driver.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/prompts.d.ts +158 -0
- package/dist/types/prompts.d.ts.map +1 -0
- package/dist/types/prompts.js +6 -0
- package/dist/types/prompts.js.map +1 -0
- package/dist/types/state.d.ts +278 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +7 -0
- package/dist/types/state.js.map +1 -0
- package/dist/utils/config-loader.d.ts +29 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +163 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +24 -3
- package/dist/ai/simple-ai-client.d.ts +0 -70
- package/dist/ai/simple-ai-client.d.ts.map +0 -1
- package/dist/ai/simple-ai-client.js +0 -181
- package/dist/ai/simple-ai-client.js.map +0 -1
- package/dist/analyzers/analyzer.d.ts +0 -23
- package/dist/analyzers/analyzer.d.ts.map +0 -1
- package/dist/analyzers/analyzer.js +0 -127
- package/dist/analyzers/analyzer.js.map +0 -1
- package/dist/cli-old/cli.d.ts +0 -3
- package/dist/cli-old/cli.d.ts.map +0 -1
- package/dist/cli-old/cli.js +0 -388
- package/dist/cli-old/cli.js.map +0 -1
- package/dist/commands/review.d.ts +0 -11
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js +0 -82
- package/dist/commands/review.js.map +0 -1
- package/dist/database/connection.d.ts +0 -40
- package/dist/database/connection.d.ts.map +0 -1
- package/dist/database/connection.js +0 -136
- package/dist/database/connection.js.map +0 -1
- package/dist/database/introspection.d.ts +0 -59
- package/dist/database/introspection.d.ts.map +0 -1
- package/dist/database/introspection.js +0 -124
- package/dist/database/introspection.js.map +0 -1
- package/dist/generators/markdown-generator.d.ts +0 -8
- package/dist/generators/markdown-generator.d.ts.map +0 -1
- package/dist/generators/markdown-generator.js +0 -106
- package/dist/generators/markdown-generator.js.map +0 -1
- package/dist/generators/sql-generator.d.ts +0 -20
- package/dist/generators/sql-generator.d.ts.map +0 -1
- package/dist/generators/sql-generator.js +0 -83
- package/dist/generators/sql-generator.js.map +0 -1
- package/dist/state/state-manager.d.ts +0 -95
- package/dist/state/state-manager.d.ts.map +0 -1
- package/dist/state/state-manager.js +0 -236
- package/dist/state/state-manager.js.map +0 -1
- package/dist/types/state-file.d.ts +0 -124
- package/dist/types/state-file.d.ts.map +0 -1
- package/dist/types/state-file.js +0 -79
- package/dist/types/state-file.js.map +0 -1
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.DatabaseConnection = void 0;
|
|
27
|
-
const sql = __importStar(require("mssql"));
|
|
28
|
-
const dotenv = __importStar(require("dotenv"));
|
|
29
|
-
// Load environment variables
|
|
30
|
-
dotenv.config();
|
|
31
|
-
/**
|
|
32
|
-
* Database connection manager - NO MJ DEPENDENCIES
|
|
33
|
-
*/
|
|
34
|
-
class DatabaseConnection {
|
|
35
|
-
constructor(config) {
|
|
36
|
-
this.config = {
|
|
37
|
-
server: config.server,
|
|
38
|
-
database: config.database,
|
|
39
|
-
user: config.user,
|
|
40
|
-
password: config.password,
|
|
41
|
-
port: config.port || 1433,
|
|
42
|
-
options: {
|
|
43
|
-
encrypt: config.encrypt !== undefined ? config.encrypt : true,
|
|
44
|
-
trustServerCertificate: config.trustServerCertificate !== undefined ? config.trustServerCertificate : false,
|
|
45
|
-
enableArithAbort: true,
|
|
46
|
-
},
|
|
47
|
-
pool: {
|
|
48
|
-
max: 10,
|
|
49
|
-
min: 2,
|
|
50
|
-
idleTimeoutMillis: 30000,
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get connection from environment variables
|
|
56
|
-
*/
|
|
57
|
-
static fromEnv() {
|
|
58
|
-
const config = {
|
|
59
|
-
server: process.env.DB_SERVER || 'localhost',
|
|
60
|
-
database: process.env.DB_DATABASE || 'master',
|
|
61
|
-
user: process.env.DB_USER,
|
|
62
|
-
password: process.env.DB_PASSWORD,
|
|
63
|
-
port: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : 1433,
|
|
64
|
-
encrypt: process.env.DB_ENCRYPT === 'true',
|
|
65
|
-
trustServerCertificate: process.env.DB_TRUST_SERVER_CERTIFICATE === 'true',
|
|
66
|
-
};
|
|
67
|
-
return new DatabaseConnection(config);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get connection pool
|
|
71
|
-
*/
|
|
72
|
-
async getConnection() {
|
|
73
|
-
if (this.pool && this.pool.connected) {
|
|
74
|
-
return this.pool;
|
|
75
|
-
}
|
|
76
|
-
this.pool = new sql.ConnectionPool(this.config);
|
|
77
|
-
await this.pool.connect();
|
|
78
|
-
return this.pool;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Execute query with retry logic
|
|
82
|
-
*/
|
|
83
|
-
async query(queryText, params) {
|
|
84
|
-
let lastError;
|
|
85
|
-
const maxRetries = 3;
|
|
86
|
-
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
87
|
-
try {
|
|
88
|
-
const pool = await this.getConnection();
|
|
89
|
-
const request = pool.request();
|
|
90
|
-
if (params) {
|
|
91
|
-
for (const [key, value] of Object.entries(params)) {
|
|
92
|
-
request.input(key, value);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const result = await request.query(queryText);
|
|
96
|
-
return result.recordset;
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
lastError = error;
|
|
100
|
-
if (lastError.message.includes('Incorrect syntax')) {
|
|
101
|
-
throw lastError;
|
|
102
|
-
}
|
|
103
|
-
if (attempt < maxRetries) {
|
|
104
|
-
await this.sleep(Math.pow(2, attempt) * 100);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
throw lastError || new Error('Query failed after retries');
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Close connection
|
|
112
|
-
*/
|
|
113
|
-
async close() {
|
|
114
|
-
if (this.pool) {
|
|
115
|
-
await this.pool.close();
|
|
116
|
-
this.pool = undefined;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Test connection
|
|
121
|
-
*/
|
|
122
|
-
async test() {
|
|
123
|
-
try {
|
|
124
|
-
await this.query('SELECT 1 as Test');
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
sleep(ms) {
|
|
132
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
exports.DatabaseConnection = DatabaseConnection;
|
|
136
|
-
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { DatabaseConnection } from './connection';
|
|
2
|
-
export interface TableInfo {
|
|
3
|
-
schema: string;
|
|
4
|
-
table: string;
|
|
5
|
-
rowCount: number;
|
|
6
|
-
}
|
|
7
|
-
export interface ColumnInfo {
|
|
8
|
-
name: string;
|
|
9
|
-
dataType: string;
|
|
10
|
-
maxLength?: number;
|
|
11
|
-
precision?: number;
|
|
12
|
-
scale?: number;
|
|
13
|
-
isNullable: boolean;
|
|
14
|
-
defaultValue?: string;
|
|
15
|
-
isIdentity: boolean;
|
|
16
|
-
isComputed: boolean;
|
|
17
|
-
isPrimaryKey: boolean;
|
|
18
|
-
isForeignKey: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface ForeignKeyInfo {
|
|
21
|
-
name: string;
|
|
22
|
-
column: string;
|
|
23
|
-
referencedSchema: string;
|
|
24
|
-
referencedTable: string;
|
|
25
|
-
referencedColumn: string;
|
|
26
|
-
}
|
|
27
|
-
export interface ExtendedPropertyInfo {
|
|
28
|
-
objectType: 'TABLE' | 'COLUMN';
|
|
29
|
-
objectName: string;
|
|
30
|
-
value: string;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Database introspection - pure SQL Server, no MJ dependencies
|
|
34
|
-
*/
|
|
35
|
-
export declare class DatabaseIntrospector {
|
|
36
|
-
private connection;
|
|
37
|
-
constructor(connection: DatabaseConnection);
|
|
38
|
-
/**
|
|
39
|
-
* Get all tables in database
|
|
40
|
-
*/
|
|
41
|
-
getTables(schemas?: string[], excludeSchemas?: string[]): Promise<TableInfo[]>;
|
|
42
|
-
/**
|
|
43
|
-
* Get columns for a table
|
|
44
|
-
*/
|
|
45
|
-
getColumns(schema: string, table: string): Promise<ColumnInfo[]>;
|
|
46
|
-
/**
|
|
47
|
-
* Get foreign keys for a table
|
|
48
|
-
*/
|
|
49
|
-
getForeignKeys(schema: string, table: string): Promise<ForeignKeyInfo[]>;
|
|
50
|
-
/**
|
|
51
|
-
* Get extended properties (existing descriptions)
|
|
52
|
-
*/
|
|
53
|
-
getExtendedProperties(schema: string, table: string): Promise<ExtendedPropertyInfo[]>;
|
|
54
|
-
/**
|
|
55
|
-
* Sample data from table
|
|
56
|
-
*/
|
|
57
|
-
sampleData(schema: string, table: string, limit?: number): Promise<Record<string, any>[]>;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=introspection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"introspection.d.ts","sourceRoot":"","sources":["../../src/database/introspection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,kBAAkB;IAElD;;OAEG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA+BpF;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgCtE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB9E;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAkB3F;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAIpG"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DatabaseIntrospector = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Database introspection - pure SQL Server, no MJ dependencies
|
|
6
|
-
*/
|
|
7
|
-
class DatabaseIntrospector {
|
|
8
|
-
constructor(connection) {
|
|
9
|
-
this.connection = connection;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Get all tables in database
|
|
13
|
-
*/
|
|
14
|
-
async getTables(schemas, excludeSchemas) {
|
|
15
|
-
let where = "WHERE t.type = 'U'";
|
|
16
|
-
if (schemas && schemas.length > 0) {
|
|
17
|
-
const schemaList = schemas.map(s => `'${s.replace(/'/g, "''")}'`).join(',');
|
|
18
|
-
where += ` AND s.name IN (${schemaList})`;
|
|
19
|
-
}
|
|
20
|
-
if (excludeSchemas && excludeSchemas.length > 0) {
|
|
21
|
-
const excludeList = excludeSchemas.map(s => `'${s.replace(/'/g, "''")}'`).join(',');
|
|
22
|
-
where += ` AND s.name NOT IN (${excludeList})`;
|
|
23
|
-
}
|
|
24
|
-
where += ` AND s.name NOT IN ('sys', 'INFORMATION_SCHEMA')`;
|
|
25
|
-
const query = `
|
|
26
|
-
SELECT
|
|
27
|
-
s.name AS [schema],
|
|
28
|
-
t.name AS [table],
|
|
29
|
-
SUM(p.rows) AS rowCount
|
|
30
|
-
FROM sys.tables t
|
|
31
|
-
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
|
|
32
|
-
LEFT JOIN sys.partitions p ON t.object_id = p.object_id AND p.index_id IN (0, 1)
|
|
33
|
-
${where}
|
|
34
|
-
GROUP BY s.name, t.name
|
|
35
|
-
ORDER BY s.name, t.name
|
|
36
|
-
`;
|
|
37
|
-
return await this.connection.query(query);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Get columns for a table
|
|
41
|
-
*/
|
|
42
|
-
async getColumns(schema, table) {
|
|
43
|
-
const query = `
|
|
44
|
-
SELECT
|
|
45
|
-
c.name,
|
|
46
|
-
t.name AS dataType,
|
|
47
|
-
c.max_length AS maxLength,
|
|
48
|
-
c.precision,
|
|
49
|
-
c.scale,
|
|
50
|
-
c.is_nullable AS isNullable,
|
|
51
|
-
OBJECT_DEFINITION(c.default_object_id) AS defaultValue,
|
|
52
|
-
c.is_identity AS isIdentity,
|
|
53
|
-
c.is_computed AS isComputed,
|
|
54
|
-
CASE WHEN pk.column_id IS NOT NULL THEN 1 ELSE 0 END AS isPrimaryKey,
|
|
55
|
-
CASE WHEN fk.parent_column_id IS NOT NULL THEN 1 ELSE 0 END AS isForeignKey
|
|
56
|
-
FROM sys.columns c
|
|
57
|
-
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
|
|
58
|
-
INNER JOIN sys.tables tbl ON c.object_id = tbl.object_id
|
|
59
|
-
INNER JOIN sys.schemas s ON tbl.schema_id = s.schema_id
|
|
60
|
-
LEFT JOIN (
|
|
61
|
-
SELECT ic.object_id, ic.column_id
|
|
62
|
-
FROM sys.index_columns ic
|
|
63
|
-
INNER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
|
|
64
|
-
WHERE i.is_primary_key = 1
|
|
65
|
-
) pk ON c.object_id = pk.object_id AND c.column_id = pk.column_id
|
|
66
|
-
LEFT JOIN sys.foreign_key_columns fk ON c.object_id = fk.parent_object_id AND c.column_id = fk.parent_column_id
|
|
67
|
-
WHERE s.name = @schema AND tbl.name = @table
|
|
68
|
-
ORDER BY c.column_id
|
|
69
|
-
`;
|
|
70
|
-
return await this.connection.query(query, { schema, table });
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Get foreign keys for a table
|
|
74
|
-
*/
|
|
75
|
-
async getForeignKeys(schema, table) {
|
|
76
|
-
const query = `
|
|
77
|
-
SELECT
|
|
78
|
-
fk.name,
|
|
79
|
-
c1.name AS [column],
|
|
80
|
-
s2.name AS referencedSchema,
|
|
81
|
-
t2.name AS referencedTable,
|
|
82
|
-
c2.name AS referencedColumn
|
|
83
|
-
FROM sys.foreign_keys fk
|
|
84
|
-
INNER JOIN sys.tables t1 ON fk.parent_object_id = t1.object_id
|
|
85
|
-
INNER JOIN sys.schemas s1 ON t1.schema_id = s1.schema_id
|
|
86
|
-
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
|
|
87
|
-
INNER JOIN sys.columns c1 ON fkc.parent_object_id = c1.object_id AND fkc.parent_column_id = c1.column_id
|
|
88
|
-
INNER JOIN sys.columns c2 ON fkc.referenced_object_id = c2.object_id AND fkc.referenced_column_id = c2.column_id
|
|
89
|
-
INNER JOIN sys.tables t2 ON fkc.referenced_object_id = t2.object_id
|
|
90
|
-
INNER JOIN sys.schemas s2 ON t2.schema_id = s2.schema_id
|
|
91
|
-
WHERE s1.name = @schema AND t1.name = @table
|
|
92
|
-
ORDER BY fk.name
|
|
93
|
-
`;
|
|
94
|
-
return await this.connection.query(query, { schema, table });
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get extended properties (existing descriptions)
|
|
98
|
-
*/
|
|
99
|
-
async getExtendedProperties(schema, table) {
|
|
100
|
-
const query = `
|
|
101
|
-
SELECT
|
|
102
|
-
CASE WHEN ep.minor_id = 0 THEN 'TABLE' ELSE 'COLUMN' END AS objectType,
|
|
103
|
-
COALESCE(c.name, t.name) AS objectName,
|
|
104
|
-
CAST(ep.value AS NVARCHAR(MAX)) AS value
|
|
105
|
-
FROM sys.extended_properties ep
|
|
106
|
-
INNER JOIN sys.tables t ON ep.major_id = t.object_id
|
|
107
|
-
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
|
|
108
|
-
LEFT JOIN sys.columns c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
|
|
109
|
-
WHERE s.name = @schema
|
|
110
|
-
AND t.name = @table
|
|
111
|
-
AND ep.name = 'MS_Description'
|
|
112
|
-
`;
|
|
113
|
-
return await this.connection.query(query, { schema, table });
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Sample data from table
|
|
117
|
-
*/
|
|
118
|
-
async sampleData(schema, table, limit = 10) {
|
|
119
|
-
const query = `SELECT TOP ${limit} * FROM [${schema}].[${table}]`;
|
|
120
|
-
return await this.connection.query(query);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
exports.DatabaseIntrospector = DatabaseIntrospector;
|
|
124
|
-
//# sourceMappingURL=introspection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"introspection.js","sourceRoot":"","sources":["../../src/database/introspection.ts"],"names":[],"mappings":";;;AAoCA;;GAEG;AACH,MAAa,oBAAoB;IAC/B,YAAoB,UAA8B;QAA9B,eAAU,GAAV,UAAU,CAAoB;IAAG,CAAC;IAEtD;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAkB,EAAE,cAAyB;QAC3D,IAAI,KAAK,GAAG,oBAAoB,CAAC;QAEjC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5E,KAAK,IAAI,mBAAmB,UAAU,GAAG,CAAC;QAC5C,CAAC;QAED,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpF,KAAK,IAAI,uBAAuB,WAAW,GAAG,CAAC;QACjD,CAAC;QAED,KAAK,IAAI,kDAAkD,CAAC;QAE5D,MAAM,KAAK,GAAG;;;;;;;;QAQV,KAAK;;;KAGR,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAY,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,KAAa;QAC5C,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;KA0Bb,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAa,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,KAAa;QAChD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;KAiBb,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAiB,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,MAAc,EAAE,KAAa;QACvD,MAAM,KAAK,GAAG;;;;;;;;;;;;KAYb,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAuB,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,QAAgB,EAAE;QAChE,MAAM,KAAK,GAAG,cAAc,KAAK,YAAY,MAAM,MAAM,KAAK,GAAG,CAAC;QAClE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AA9HD,oDA8HC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-generator.d.ts","sourceRoot":"","sources":["../../src/generators/markdown-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CA8HnC"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MarkdownGenerator = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Generate Markdown documentation
|
|
6
|
-
*/
|
|
7
|
-
class MarkdownGenerator {
|
|
8
|
-
generate(state) {
|
|
9
|
-
const lines = [];
|
|
10
|
-
lines.push(`# Database Documentation: ${state.database.database}`);
|
|
11
|
-
lines.push('');
|
|
12
|
-
lines.push(`**Server**: ${state.database.server}`);
|
|
13
|
-
lines.push(`**Generated**: ${new Date().toISOString()}`);
|
|
14
|
-
lines.push('');
|
|
15
|
-
if (state.seedContext) {
|
|
16
|
-
lines.push('## Overview');
|
|
17
|
-
if (state.seedContext.overallPurpose) {
|
|
18
|
-
lines.push(state.seedContext.overallPurpose);
|
|
19
|
-
}
|
|
20
|
-
if (state.seedContext.businessDomains) {
|
|
21
|
-
lines.push('');
|
|
22
|
-
lines.push('**Business Domains**: ' + state.seedContext.businessDomains.join(', '));
|
|
23
|
-
}
|
|
24
|
-
lines.push('');
|
|
25
|
-
}
|
|
26
|
-
lines.push('## Schemas');
|
|
27
|
-
lines.push('');
|
|
28
|
-
for (const [schemaName, schema] of Object.entries(state.schemas)) {
|
|
29
|
-
lines.push(`### ${schemaName}`);
|
|
30
|
-
lines.push('');
|
|
31
|
-
if (schema.description) {
|
|
32
|
-
lines.push(schema.description);
|
|
33
|
-
lines.push('');
|
|
34
|
-
}
|
|
35
|
-
if (schema.businessDomain) {
|
|
36
|
-
lines.push(`**Domain**: ${schema.businessDomain}`);
|
|
37
|
-
lines.push('');
|
|
38
|
-
}
|
|
39
|
-
lines.push('#### Tables');
|
|
40
|
-
lines.push('');
|
|
41
|
-
for (const [tableName, table] of Object.entries(schema.tables)) {
|
|
42
|
-
lines.push(`##### ${tableName}`);
|
|
43
|
-
lines.push('');
|
|
44
|
-
if (table.finalDescription) {
|
|
45
|
-
lines.push(table.finalDescription);
|
|
46
|
-
lines.push('');
|
|
47
|
-
}
|
|
48
|
-
if (table.aiGenerated?.businessDomain) {
|
|
49
|
-
lines.push(`**Domain**: ${table.aiGenerated.businessDomain}`);
|
|
50
|
-
lines.push('');
|
|
51
|
-
}
|
|
52
|
-
if (table.userNotes) {
|
|
53
|
-
lines.push(`**Notes**: ${table.userNotes}`);
|
|
54
|
-
lines.push('');
|
|
55
|
-
}
|
|
56
|
-
// Columns table
|
|
57
|
-
const hasColumns = Object.keys(table.columns).length > 0;
|
|
58
|
-
if (hasColumns) {
|
|
59
|
-
lines.push('**Columns**:');
|
|
60
|
-
lines.push('');
|
|
61
|
-
lines.push('| Column | Description |');
|
|
62
|
-
lines.push('|--------|-------------|');
|
|
63
|
-
for (const [columnName, column] of Object.entries(table.columns)) {
|
|
64
|
-
const desc = column.finalDescription || '';
|
|
65
|
-
lines.push(`| ${columnName} | ${desc} |`);
|
|
66
|
-
}
|
|
67
|
-
lines.push('');
|
|
68
|
-
}
|
|
69
|
-
// Relationships
|
|
70
|
-
if (table.aiGenerated?.relationships && table.aiGenerated.relationships.length > 0) {
|
|
71
|
-
lines.push('**Relationships**:');
|
|
72
|
-
lines.push('');
|
|
73
|
-
for (const rel of table.aiGenerated.relationships) {
|
|
74
|
-
lines.push(`- ${rel.type === 'parent' ? '→' : '←'} ${rel.table}: ${rel.description}`);
|
|
75
|
-
}
|
|
76
|
-
lines.push('');
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Statistics
|
|
81
|
-
lines.push('---');
|
|
82
|
-
lines.push('');
|
|
83
|
-
lines.push('## Statistics');
|
|
84
|
-
lines.push('');
|
|
85
|
-
const totalSchemas = Object.keys(state.schemas).length;
|
|
86
|
-
const totalTables = Object.values(state.schemas).reduce((sum, s) => sum + Object.keys(s.tables).length, 0);
|
|
87
|
-
const totalColumns = Object.values(state.schemas).reduce((sum, s) => sum + Object.values(s.tables).reduce((s2, t) => s2 + Object.keys(t.columns).length, 0), 0);
|
|
88
|
-
lines.push(`- **Schemas**: ${totalSchemas}`);
|
|
89
|
-
lines.push(`- **Tables**: ${totalTables}`);
|
|
90
|
-
lines.push(`- **Columns**: ${totalColumns}`);
|
|
91
|
-
if (state.runHistory.length > 0) {
|
|
92
|
-
const lastRun = state.runHistory[state.runHistory.length - 1];
|
|
93
|
-
lines.push('');
|
|
94
|
-
lines.push(`**Last Run**: ${lastRun.timestamp}`);
|
|
95
|
-
if (lastRun.tokensUsed) {
|
|
96
|
-
lines.push(`**Tokens Used**: ${lastRun.tokensUsed.toLocaleString()}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
lines.push('');
|
|
100
|
-
lines.push('---');
|
|
101
|
-
lines.push('*Generated by SQL Server Documentation Generator*');
|
|
102
|
-
return lines.join('\n');
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
exports.MarkdownGenerator = MarkdownGenerator;
|
|
106
|
-
//# sourceMappingURL=markdown-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-generator.js","sourceRoot":"","sources":["../../src/generators/markdown-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { StateFile } from '../types/state-file';
|
|
2
|
-
export interface SQLGeneratorOptions {
|
|
3
|
-
approvedOnly?: boolean;
|
|
4
|
-
confidenceThreshold?: number;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Generate SQL scripts with sp_addextendedproperty statements
|
|
8
|
-
*/
|
|
9
|
-
export declare class SQLGenerator {
|
|
10
|
-
generate(state: StateFile, options?: SQLGeneratorOptions): string;
|
|
11
|
-
/**
|
|
12
|
-
* Generate sp_addextendedproperty for table
|
|
13
|
-
*/
|
|
14
|
-
private generateTableProperty;
|
|
15
|
-
/**
|
|
16
|
-
* Generate sp_addextendedproperty for column
|
|
17
|
-
*/
|
|
18
|
-
private generateColumnProperty;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=sql-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql-generator.d.ts","sourceRoot":"","sources":["../../src/generators/sql-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM;IA4DrE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAgB/B"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SQLGenerator = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Generate SQL scripts with sp_addextendedproperty statements
|
|
6
|
-
*/
|
|
7
|
-
class SQLGenerator {
|
|
8
|
-
generate(state, options = {}) {
|
|
9
|
-
const lines = [];
|
|
10
|
-
lines.push('-- Generated by SQL Server Documentation Generator');
|
|
11
|
-
lines.push(`-- Database: ${state.database.server}.${state.database.database}`);
|
|
12
|
-
lines.push(`-- Generated: ${new Date().toISOString()}`);
|
|
13
|
-
lines.push('');
|
|
14
|
-
lines.push('BEGIN TRANSACTION;');
|
|
15
|
-
lines.push('');
|
|
16
|
-
let count = 0;
|
|
17
|
-
for (const [schemaName, schema] of Object.entries(state.schemas)) {
|
|
18
|
-
for (const [tableName, table] of Object.entries(schema.tables)) {
|
|
19
|
-
// Skip if not approved (when approvedOnly is true)
|
|
20
|
-
if (options.approvedOnly && !table.userApproved) {
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
// Skip if confidence too low
|
|
24
|
-
if (options.confidenceThreshold && table.aiGenerated) {
|
|
25
|
-
if (table.aiGenerated.confidence < options.confidenceThreshold) {
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
// Table description
|
|
30
|
-
if (table.finalDescription) {
|
|
31
|
-
lines.push(this.generateTableProperty(schemaName, tableName, table.finalDescription));
|
|
32
|
-
count++;
|
|
33
|
-
}
|
|
34
|
-
// Column descriptions
|
|
35
|
-
for (const [columnName, column] of Object.entries(table.columns)) {
|
|
36
|
-
// Skip if confidence too low
|
|
37
|
-
if (options.confidenceThreshold && column.aiGenerated) {
|
|
38
|
-
if (column.aiGenerated.confidence < options.confidenceThreshold) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (column.finalDescription) {
|
|
43
|
-
lines.push(this.generateColumnProperty(schemaName, tableName, columnName, column.finalDescription));
|
|
44
|
-
count++;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
lines.push('');
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
lines.push('COMMIT TRANSACTION;');
|
|
51
|
-
lines.push('');
|
|
52
|
-
lines.push(`-- Total properties: ${count}`);
|
|
53
|
-
return lines.join('\n');
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Generate sp_addextendedproperty for table
|
|
57
|
-
*/
|
|
58
|
-
generateTableProperty(schema, table, description) {
|
|
59
|
-
const escapedDesc = description.replace(/'/g, "''");
|
|
60
|
-
return `
|
|
61
|
-
-- ${schema}.${table}
|
|
62
|
-
EXEC sp_addextendedproperty
|
|
63
|
-
@name = N'MS_Description',
|
|
64
|
-
@value = N'${escapedDesc}',
|
|
65
|
-
@level0type = N'SCHEMA', @level0name = N'${schema}',
|
|
66
|
-
@level1type = N'TABLE', @level1name = N'${table}';`;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Generate sp_addextendedproperty for column
|
|
70
|
-
*/
|
|
71
|
-
generateColumnProperty(schema, table, column, description) {
|
|
72
|
-
const escapedDesc = description.replace(/'/g, "''");
|
|
73
|
-
return `
|
|
74
|
-
EXEC sp_addextendedproperty
|
|
75
|
-
@name = N'MS_Description',
|
|
76
|
-
@value = N'${escapedDesc}',
|
|
77
|
-
@level0type = N'SCHEMA', @level0name = N'${schema}',
|
|
78
|
-
@level1type = N'TABLE', @level1name = N'${table}',
|
|
79
|
-
@level2type = N'COLUMN', @level2name = N'${column}';`;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.SQLGenerator = SQLGenerator;
|
|
83
|
-
//# sourceMappingURL=sql-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql-generator.js","sourceRoot":"","sources":["../../src/generators/sql-generator.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,MAAa,YAAY;IACvB,QAAQ,CAAC,KAAgB,EAAE,UAA+B,EAAE;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/D,mDAAmD;gBACnD,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,OAAO,CAAC,mBAAmB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACrD,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;wBAC/D,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,oBAAoB;gBACpB,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBACtF,KAAK,EAAE,CAAC;gBACV,CAAC;gBAED,sBAAsB;gBACtB,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjE,6BAA6B;oBAC7B,IAAI,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;wBACtD,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;4BAChE,SAAS;wBACX,CAAC;oBACH,CAAC;oBAED,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;wBAC5B,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CACxF,CAAC;wBACF,KAAK,EAAE,CAAC;oBACV,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;QAE5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAAc,EAAE,KAAa,EAAE,WAAmB;QAC9E,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpD,OAAO;KACN,MAAM,IAAI,KAAK;;;eAGL,WAAW;6CACmB,MAAM;4CACP,KAAK,IAAI,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,MAAc,EACd,KAAa,EACb,MAAc,EACd,WAAmB;QAEnB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpD,OAAO;;;eAGI,WAAW;6CACmB,MAAM;4CACP,KAAK;6CACJ,MAAM,IAAI,CAAC;IACtD,CAAC;CACF;AA/FD,oCA+FC"}
|