@tejasanik/postgres-mcp-server 2.1.0 → 2.2.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 +186 -10
- package/dist/db-manager/index.d.ts +7 -0
- package/dist/db-manager/index.d.ts.map +1 -0
- package/dist/db-manager/index.js +7 -0
- package/dist/db-manager/index.js.map +1 -0
- package/dist/db-manager/validation.d.ts +35 -0
- package/dist/db-manager/validation.d.ts.map +1 -0
- package/dist/db-manager/validation.js +54 -0
- package/dist/db-manager/validation.js.map +1 -0
- package/dist/db-manager.d.ts +175 -5
- package/dist/db-manager.d.ts.map +1 -1
- package/dist/db-manager.js +589 -26
- package/dist/db-manager.js.map +1 -1
- package/dist/index.js +141 -11
- package/dist/index.js.map +1 -1
- package/dist/tools/analysis-tools.d.ts.map +1 -1
- package/dist/tools/analysis-tools.js +53 -49
- package/dist/tools/analysis-tools.js.map +1 -1
- package/dist/tools/schema-tools.d.ts +40 -1
- package/dist/tools/schema-tools.d.ts.map +1 -1
- package/dist/tools/schema-tools.js +174 -92
- package/dist/tools/schema-tools.js.map +1 -1
- package/dist/tools/server-tools.d.ts +1 -0
- package/dist/tools/server-tools.d.ts.map +1 -1
- package/dist/tools/server-tools.js +10 -6
- package/dist/tools/server-tools.js.map +1 -1
- package/dist/tools/sql/utils/connection-utils.d.ts +79 -0
- package/dist/tools/sql/utils/connection-utils.d.ts.map +1 -0
- package/dist/tools/sql/utils/connection-utils.js +129 -0
- package/dist/tools/sql/utils/connection-utils.js.map +1 -0
- package/dist/tools/sql/utils/constants.d.ts +55 -0
- package/dist/tools/sql/utils/constants.d.ts.map +1 -0
- package/dist/tools/sql/utils/constants.js +55 -0
- package/dist/tools/sql/utils/constants.js.map +1 -0
- package/dist/tools/sql/utils/dry-run-utils.d.ts +31 -0
- package/dist/tools/sql/utils/dry-run-utils.d.ts.map +1 -0
- package/dist/tools/sql/utils/dry-run-utils.js +173 -0
- package/dist/tools/sql/utils/dry-run-utils.js.map +1 -0
- package/dist/tools/sql/utils/file-handler.d.ts +57 -0
- package/dist/tools/sql/utils/file-handler.d.ts.map +1 -0
- package/dist/tools/sql/utils/file-handler.js +150 -0
- package/dist/tools/sql/utils/file-handler.js.map +1 -0
- package/dist/tools/sql/utils/index.d.ts +12 -0
- package/dist/tools/sql/utils/index.d.ts.map +1 -0
- package/dist/tools/sql/utils/index.js +12 -0
- package/dist/tools/sql/utils/index.js.map +1 -0
- package/dist/tools/sql/utils/result-formatter.d.ts +94 -0
- package/dist/tools/sql/utils/result-formatter.d.ts.map +1 -0
- package/dist/tools/sql/utils/result-formatter.js +154 -0
- package/dist/tools/sql/utils/result-formatter.js.map +1 -0
- package/dist/tools/sql/utils/sql-parser.d.ts +125 -0
- package/dist/tools/sql/utils/sql-parser.d.ts.map +1 -0
- package/dist/tools/sql/utils/sql-parser.js +468 -0
- package/dist/tools/sql/utils/sql-parser.js.map +1 -0
- package/dist/tools/sql-tools.d.ts +21 -0
- package/dist/tools/sql-tools.d.ts.map +1 -1
- package/dist/tools/sql-tools.js +383 -532
- package/dist/tools/sql-tools.js.map +1 -1
- package/dist/types.d.ts +38 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/retry.d.ts +1 -1
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/validation.d.ts +45 -9
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +335 -72
- package/dist/utils/validation.js.map +1 -1
- package/package.json +9 -2
- package/dist/__tests__/analysis-tools.test.d.ts +0 -2
- package/dist/__tests__/analysis-tools.test.d.ts.map +0 -1
- package/dist/__tests__/analysis-tools.test.js +0 -294
- package/dist/__tests__/analysis-tools.test.js.map +0 -1
- package/dist/__tests__/db-manager.test.d.ts +0 -2
- package/dist/__tests__/db-manager.test.d.ts.map +0 -1
- package/dist/__tests__/db-manager.test.js +0 -410
- package/dist/__tests__/db-manager.test.js.map +0 -1
- package/dist/__tests__/mcp-server.test.d.ts +0 -13
- package/dist/__tests__/mcp-server.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-server.test.js +0 -146
- package/dist/__tests__/mcp-server.test.js.map +0 -1
- package/dist/__tests__/schema-tools.test.d.ts +0 -2
- package/dist/__tests__/schema-tools.test.d.ts.map +0 -1
- package/dist/__tests__/schema-tools.test.js +0 -171
- package/dist/__tests__/schema-tools.test.js.map +0 -1
- package/dist/__tests__/server-tools.test.d.ts +0 -2
- package/dist/__tests__/server-tools.test.d.ts.map +0 -1
- package/dist/__tests__/server-tools.test.js +0 -113
- package/dist/__tests__/server-tools.test.js.map +0 -1
- package/dist/__tests__/sql-tools.test.d.ts +0 -2
- package/dist/__tests__/sql-tools.test.d.ts.map +0 -1
- package/dist/__tests__/sql-tools.test.js +0 -1912
- package/dist/__tests__/sql-tools.test.js.map +0 -1
- package/dist/__tests__/validation.test.d.ts +0 -2
- package/dist/__tests__/validation.test.d.ts.map +0 -1
- package/dist/__tests__/validation.test.js +0 -203
- package/dist/__tests__/validation.test.js.map +0 -1
|
@@ -1,7 +1,99 @@
|
|
|
1
1
|
import { getDbManager } from '../db-manager.js';
|
|
2
|
-
import { validateIdentifier } from '../utils/validation.js';
|
|
2
|
+
import { validateIdentifier, validatePositiveInteger } from '../utils/validation.js';
|
|
3
|
+
/** Default pagination limit for listObjects */
|
|
4
|
+
const DEFAULT_LIST_LIMIT = 100;
|
|
5
|
+
/** Maximum pagination limit for listObjects */
|
|
6
|
+
const MAX_LIST_LIMIT = 1000;
|
|
7
|
+
/**
|
|
8
|
+
* Validates list objects filter parameter.
|
|
9
|
+
*/
|
|
10
|
+
function validateFilter(filter) {
|
|
11
|
+
if (!filter)
|
|
12
|
+
return;
|
|
13
|
+
if (filter.length > 128) {
|
|
14
|
+
throw new Error('filter must be 128 characters or less');
|
|
15
|
+
}
|
|
16
|
+
if (!/^[a-zA-Z0-9_% ]+$/.test(filter)) {
|
|
17
|
+
throw new Error('filter contains invalid characters');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds a single UNION query part for a specific object type.
|
|
22
|
+
*/
|
|
23
|
+
function buildObjectTypeQuery(type, hasFilter) {
|
|
24
|
+
const filterClause = hasFilter ? "AND %NAME% ILIKE '%' || $2 || '%'" : '';
|
|
25
|
+
switch (type) {
|
|
26
|
+
case 'table':
|
|
27
|
+
return `
|
|
28
|
+
SELECT
|
|
29
|
+
tablename as name,
|
|
30
|
+
'table'::text as type,
|
|
31
|
+
tableowner as owner,
|
|
32
|
+
schemaname as schema
|
|
33
|
+
FROM pg_catalog.pg_tables
|
|
34
|
+
WHERE schemaname = $1
|
|
35
|
+
${filterClause.replace('%NAME%', 'tablename')}
|
|
36
|
+
`;
|
|
37
|
+
case 'view':
|
|
38
|
+
return `
|
|
39
|
+
SELECT
|
|
40
|
+
v.table_name as name,
|
|
41
|
+
'view'::text as type,
|
|
42
|
+
COALESCE(c.relowner::regrole::text, '') as owner,
|
|
43
|
+
v.table_schema as schema
|
|
44
|
+
FROM information_schema.views v
|
|
45
|
+
LEFT JOIN pg_class c ON c.relname = v.table_name
|
|
46
|
+
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = v.table_schema
|
|
47
|
+
WHERE v.table_schema = $1
|
|
48
|
+
${filterClause.replace('%NAME%', 'v.table_name')}
|
|
49
|
+
`;
|
|
50
|
+
case 'sequence':
|
|
51
|
+
return `
|
|
52
|
+
SELECT
|
|
53
|
+
s.sequence_name as name,
|
|
54
|
+
'sequence'::text as type,
|
|
55
|
+
COALESCE(c.relowner::regrole::text, '') as owner,
|
|
56
|
+
s.sequence_schema as schema
|
|
57
|
+
FROM information_schema.sequences s
|
|
58
|
+
LEFT JOIN pg_class c ON c.relname = s.sequence_name
|
|
59
|
+
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = s.sequence_schema
|
|
60
|
+
WHERE s.sequence_schema = $1
|
|
61
|
+
${filterClause.replace('%NAME%', 's.sequence_name')}
|
|
62
|
+
`;
|
|
63
|
+
case 'extension':
|
|
64
|
+
return `
|
|
65
|
+
SELECT
|
|
66
|
+
extname as name,
|
|
67
|
+
'extension'::text as type,
|
|
68
|
+
COALESCE(extowner::regrole::text, '') as owner,
|
|
69
|
+
n.nspname as schema
|
|
70
|
+
FROM pg_extension e
|
|
71
|
+
JOIN pg_namespace n ON e.extnamespace = n.oid
|
|
72
|
+
WHERE n.nspname = $1
|
|
73
|
+
${filterClause.replace('%NAME%', 'extname')}
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Collects union query parts based on requested object type.
|
|
79
|
+
*/
|
|
80
|
+
function collectUnionParts(objectType, hasFilter) {
|
|
81
|
+
const parts = [];
|
|
82
|
+
const types = ['table', 'view', 'sequence', 'extension'];
|
|
83
|
+
for (const type of types) {
|
|
84
|
+
if (objectType === 'all' || objectType === type) {
|
|
85
|
+
parts.push(buildObjectTypeQuery(type, hasFilter));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return parts;
|
|
89
|
+
}
|
|
3
90
|
export async function listSchemas(args) {
|
|
4
91
|
const dbManager = getDbManager();
|
|
92
|
+
// Build connection override if specified
|
|
93
|
+
const hasOverride = args.server || args.database || args.schema;
|
|
94
|
+
const override = hasOverride
|
|
95
|
+
? { server: args.server, database: args.database, schema: args.schema }
|
|
96
|
+
: undefined;
|
|
5
97
|
let query = `
|
|
6
98
|
SELECT
|
|
7
99
|
schema_name,
|
|
@@ -15,9 +107,16 @@ export async function listSchemas(args) {
|
|
|
15
107
|
`;
|
|
16
108
|
}
|
|
17
109
|
query += ' ORDER BY schema_name';
|
|
18
|
-
const result = await dbManager.
|
|
110
|
+
const result = await dbManager.queryWithOverride(query, undefined, override);
|
|
19
111
|
return result.rows;
|
|
20
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Lists database objects (tables, views, sequences, extensions) in a schema.
|
|
115
|
+
* Supports filtering by object type, name pattern, and pagination.
|
|
116
|
+
*
|
|
117
|
+
* @param args - Query parameters including schema, filters, and pagination
|
|
118
|
+
* @returns Paginated result with objects and metadata
|
|
119
|
+
*/
|
|
21
120
|
export async function listObjects(args) {
|
|
22
121
|
// Validate required parameters
|
|
23
122
|
if (!args.schema) {
|
|
@@ -25,94 +124,70 @@ export async function listObjects(args) {
|
|
|
25
124
|
}
|
|
26
125
|
// Validate schema name to prevent SQL injection
|
|
27
126
|
validateIdentifier(args.schema, 'schema');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
throw new Error('filter contains invalid characters');
|
|
37
|
-
}
|
|
38
|
-
}
|
|
127
|
+
validateFilter(args.filter);
|
|
128
|
+
// Validate and set pagination parameters
|
|
129
|
+
const limit = args.limit !== undefined
|
|
130
|
+
? validatePositiveInteger(args.limit, 'limit', 1, MAX_LIST_LIMIT)
|
|
131
|
+
: DEFAULT_LIST_LIMIT;
|
|
132
|
+
const offset = args.offset !== undefined
|
|
133
|
+
? validatePositiveInteger(args.offset, 'offset', 0, 1000000)
|
|
134
|
+
: 0;
|
|
39
135
|
const dbManager = getDbManager();
|
|
40
136
|
const objectType = args.objectType || 'all';
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
// List views
|
|
60
|
-
if (objectType === 'all' || objectType === 'view') {
|
|
61
|
-
const viewsQuery = `
|
|
62
|
-
SELECT
|
|
63
|
-
v.table_name as name,
|
|
64
|
-
'view' as type,
|
|
65
|
-
v.table_schema as schema,
|
|
66
|
-
COALESCE(c.relowner::regrole::text, '') as owner
|
|
67
|
-
FROM information_schema.views v
|
|
68
|
-
LEFT JOIN pg_class c ON c.relname = v.table_name
|
|
69
|
-
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = v.table_schema
|
|
70
|
-
WHERE v.table_schema = $1
|
|
71
|
-
${args.filter ? "AND v.table_name ILIKE '%' || $2 || '%'" : ''}
|
|
72
|
-
ORDER BY v.table_name
|
|
73
|
-
`;
|
|
74
|
-
const params = args.filter ? [args.schema, args.filter] : [args.schema];
|
|
75
|
-
const views = await dbManager.query(viewsQuery, params);
|
|
76
|
-
objects.push(...views.rows);
|
|
77
|
-
}
|
|
78
|
-
// List sequences
|
|
79
|
-
if (objectType === 'all' || objectType === 'sequence') {
|
|
80
|
-
const sequencesQuery = `
|
|
81
|
-
SELECT
|
|
82
|
-
s.sequence_name as name,
|
|
83
|
-
'sequence' as type,
|
|
84
|
-
s.sequence_schema as schema,
|
|
85
|
-
COALESCE(c.relowner::regrole::text, '') as owner
|
|
86
|
-
FROM information_schema.sequences s
|
|
87
|
-
LEFT JOIN pg_class c ON c.relname = s.sequence_name
|
|
88
|
-
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = s.sequence_schema
|
|
89
|
-
WHERE s.sequence_schema = $1
|
|
90
|
-
${args.filter ? "AND s.sequence_name ILIKE '%' || $2 || '%'" : ''}
|
|
91
|
-
ORDER BY s.sequence_name
|
|
92
|
-
`;
|
|
93
|
-
const params = args.filter ? [args.schema, args.filter] : [args.schema];
|
|
94
|
-
const sequences = await dbManager.query(sequencesQuery, params);
|
|
95
|
-
objects.push(...sequences.rows);
|
|
137
|
+
// Build connection override if specified
|
|
138
|
+
const hasOverride = args.server || args.database || args.targetSchema;
|
|
139
|
+
const override = hasOverride
|
|
140
|
+
? { server: args.server, database: args.database, schema: args.targetSchema }
|
|
141
|
+
: undefined;
|
|
142
|
+
// Build union query parts using helper
|
|
143
|
+
const unionParts = collectUnionParts(objectType, !!args.filter);
|
|
144
|
+
const baseParams = args.filter ? [args.schema, args.filter] : [args.schema];
|
|
145
|
+
if (unionParts.length === 0) {
|
|
146
|
+
// No valid object types requested
|
|
147
|
+
return {
|
|
148
|
+
items: [],
|
|
149
|
+
totalCount: 0,
|
|
150
|
+
offset,
|
|
151
|
+
limit,
|
|
152
|
+
hasMore: false,
|
|
153
|
+
};
|
|
96
154
|
}
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
155
|
+
// Build the combined query with UNION ALL
|
|
156
|
+
const unionQuery = unionParts.join('\nUNION ALL\n');
|
|
157
|
+
// First, get the total count (without pagination)
|
|
158
|
+
const countQuery = `SELECT COUNT(*) as total FROM (${unionQuery}) as combined`;
|
|
159
|
+
const countResult = await dbManager.queryWithOverride(countQuery, baseParams, override);
|
|
160
|
+
const totalCount = parseInt(countResult.rows[0]?.total || '0', 10);
|
|
161
|
+
// Then get the paginated results
|
|
162
|
+
const paginatedQuery = `
|
|
163
|
+
SELECT * FROM (${unionQuery}) as combined
|
|
164
|
+
ORDER BY type, name
|
|
165
|
+
LIMIT ${limit} OFFSET ${offset}
|
|
166
|
+
`;
|
|
167
|
+
const objectsResult = await dbManager.queryWithOverride(paginatedQuery, baseParams, override);
|
|
168
|
+
return {
|
|
169
|
+
items: objectsResult.rows,
|
|
170
|
+
totalCount,
|
|
171
|
+
offset,
|
|
172
|
+
limit,
|
|
173
|
+
hasMore: offset + objectsResult.rows.length < totalCount,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Lists database objects without pagination (legacy compatibility).
|
|
178
|
+
* Returns all objects matching the criteria.
|
|
179
|
+
*
|
|
180
|
+
* @deprecated Use listObjects with pagination for better performance on large schemas
|
|
181
|
+
* @param args - Query parameters including schema and filters
|
|
182
|
+
* @returns Array of all matching objects
|
|
183
|
+
*/
|
|
184
|
+
export async function listObjectsUnpaginated(args) {
|
|
185
|
+
const result = await listObjects({
|
|
186
|
+
...args,
|
|
187
|
+
limit: MAX_LIST_LIMIT,
|
|
188
|
+
offset: 0,
|
|
189
|
+
});
|
|
190
|
+
return result.items;
|
|
116
191
|
}
|
|
117
192
|
export async function getObjectDetails(args) {
|
|
118
193
|
// Validate required parameters
|
|
@@ -126,6 +201,11 @@ export async function getObjectDetails(args) {
|
|
|
126
201
|
validateIdentifier(args.schema, 'schema');
|
|
127
202
|
validateIdentifier(args.objectName, 'objectName');
|
|
128
203
|
const dbManager = getDbManager();
|
|
204
|
+
// Build connection override if specified
|
|
205
|
+
const hasOverride = args.server || args.database || args.targetSchema;
|
|
206
|
+
const override = hasOverride
|
|
207
|
+
? { server: args.server, database: args.database, schema: args.targetSchema }
|
|
208
|
+
: undefined;
|
|
129
209
|
const result = {};
|
|
130
210
|
// Get columns - using parameterized query
|
|
131
211
|
const columnsQuery = `
|
|
@@ -139,7 +219,7 @@ export async function getObjectDetails(args) {
|
|
|
139
219
|
WHERE table_schema = $1 AND table_name = $2
|
|
140
220
|
ORDER BY ordinal_position
|
|
141
221
|
`;
|
|
142
|
-
const columns = await dbManager.
|
|
222
|
+
const columns = await dbManager.queryWithOverride(columnsQuery, [args.schema, args.objectName], override);
|
|
143
223
|
result.columns = columns.rows;
|
|
144
224
|
// Get constraints - using parameterized query
|
|
145
225
|
const constraintsQuery = `
|
|
@@ -160,7 +240,7 @@ export async function getObjectDetails(args) {
|
|
|
160
240
|
WHERE tc.table_schema = $1 AND tc.table_name = $2
|
|
161
241
|
ORDER BY tc.constraint_type, tc.constraint_name
|
|
162
242
|
`;
|
|
163
|
-
const constraints = await dbManager.
|
|
243
|
+
const constraints = await dbManager.queryWithOverride(constraintsQuery, [args.schema, args.objectName], override);
|
|
164
244
|
result.constraints = constraints.rows;
|
|
165
245
|
// Get indexes - using parameterized query
|
|
166
246
|
const indexesQuery = `
|
|
@@ -176,7 +256,7 @@ export async function getObjectDetails(args) {
|
|
|
176
256
|
WHERE n.nspname = $1 AND t.relname = $2
|
|
177
257
|
ORDER BY i.relname
|
|
178
258
|
`;
|
|
179
|
-
const indexes = await dbManager.
|
|
259
|
+
const indexes = await dbManager.queryWithOverride(indexesQuery, [args.schema, args.objectName], override);
|
|
180
260
|
result.indexes = indexes.rows;
|
|
181
261
|
// Get table size and row count using safe approach
|
|
182
262
|
try {
|
|
@@ -188,7 +268,7 @@ export async function getObjectDetails(args) {
|
|
|
188
268
|
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
189
269
|
WHERE n.nspname = $1 AND c.relname = $2
|
|
190
270
|
`;
|
|
191
|
-
const sizeResult = await dbManager.
|
|
271
|
+
const sizeResult = await dbManager.queryWithOverride(sizeQuery, [args.schema, args.objectName], override);
|
|
192
272
|
if (sizeResult.rows.length > 0) {
|
|
193
273
|
result.size = sizeResult.rows[0].size;
|
|
194
274
|
result.rowCount = sizeResult.rows[0].row_count;
|
|
@@ -196,6 +276,7 @@ export async function getObjectDetails(args) {
|
|
|
196
276
|
}
|
|
197
277
|
catch (error) {
|
|
198
278
|
// Size query might fail for views or non-existent objects
|
|
279
|
+
console.debug('Could not get object size:', error);
|
|
199
280
|
}
|
|
200
281
|
// Get view definition if it's a view - using safe parameterized approach
|
|
201
282
|
if (args.objectType === 'view') {
|
|
@@ -206,13 +287,14 @@ export async function getObjectDetails(args) {
|
|
|
206
287
|
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
207
288
|
WHERE n.nspname = $1 AND c.relname = $2 AND c.relkind = 'v'
|
|
208
289
|
`;
|
|
209
|
-
const viewDef = await dbManager.
|
|
290
|
+
const viewDef = await dbManager.queryWithOverride(viewDefQuery, [args.schema, args.objectName], override);
|
|
210
291
|
if (viewDef.rows.length > 0) {
|
|
211
292
|
result.definition = viewDef.rows[0].definition;
|
|
212
293
|
}
|
|
213
294
|
}
|
|
214
295
|
catch (error) {
|
|
215
296
|
// Might fail if not a view
|
|
297
|
+
console.debug('Could not get view definition:', error);
|
|
216
298
|
}
|
|
217
299
|
}
|
|
218
300
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-tools.js","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-tools.js","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAErF,+CAA+C;AAC/C,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,+CAA+C;AAC/C,MAAM,cAAc,GAAG,IAAI,CAAC;AAK5B;;GAEG;AACH,SAAS,cAAc,CAAC,MAA0B;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,IAAiD,EACjD,SAAkB;IAElB,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO;;;;;;;;UAQH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;OAC9C,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;;;;;;;;;;UAUH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC;OACjD,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;;;;;;;;;;UAUH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;OACpD,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;;;;;;;;;UASH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;OAC5C,CAAC;IACN,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAsB,EAAE,SAAkB;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAuD,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE7G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAMjC;IACC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,yCAAyC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;IAChE,MAAM,QAAQ,GAAmC,WAAW;QAC1D,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACvE,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,KAAK,GAAG;;;;;GAKX,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/B,KAAK,IAAI;;;KAGR,CAAC;IACJ,CAAC;IAED,KAAK,IAAI,uBAAuB,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAa,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAejC;IACC,+BAA+B;IAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,gDAAgD;IAChD,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5B,yCAAyC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS;QACpC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,CAAC;QACjE,CAAC,CAAC,kBAAkB,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS;QACtC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC;QAC5D,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAe,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;IAExD,yCAAyC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;IACtE,MAAM,QAAQ,GAAmC,WAAW;QAC1D,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;QAC7E,CAAC,CAAC,SAAS,CAAC;IAEd,uCAAuC;IACvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,kCAAkC;QAClC,OAAO;YACL,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,CAAC;YACb,MAAM;YACN,KAAK;YACL,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEpD,kDAAkD;IAClD,MAAM,UAAU,GAAG,kCAAkC,UAAU,eAAe,CAAC;IAC/E,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAoB,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3G,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAEnE,iCAAiC;IACjC,MAAM,cAAc,GAAG;qBACJ,UAAU;;YAEnB,KAAK,WAAW,MAAM;GAC/B,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAY,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEzG,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,IAAI;QACzB,UAAU;QACV,MAAM;QACN,KAAK;QACL,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU;KACzD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAO5C;IACC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,GAAG,IAAI;QACP,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAQtC;IAQC,+BAA+B;IAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,gDAAgD;IAChD,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,yCAAyC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;IACtE,MAAM,QAAQ,GAAmC,WAAW;QAC1D,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;QAC7E,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAOR,EAAE,CAAC;IAEP,0CAA0C;IAC1C,MAAM,YAAY,GAAG;;;;;;;;;;GAUpB,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAa,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtH,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9B,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;GAiBxB,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAiB,gBAAgB,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClI,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;IAEtC,0CAA0C;IAC1C,MAAM,YAAY,GAAG;;;;;;;;;;;;GAYpB,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAY,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrH,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9B,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG;;;;;;;KAOjB,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAsC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC/I,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0DAA0D;QAC1D,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,yEAAyE;IACzE,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG;;;;;OAKpB,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAyB,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2BAA2B;YAC3B,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-tools.d.ts","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3D,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAGD,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"server-tools.d.ts","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3D,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAGD,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AA2ED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsC7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwD/B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB1I;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAGpE"}
|
|
@@ -46,6 +46,7 @@ async function createTempConnection(serverName, config) {
|
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Helper to get SSL config for temporary connections.
|
|
49
|
+
* Returns undefined for disabled SSL, or an SSL config object for enabled SSL.
|
|
49
50
|
*/
|
|
50
51
|
function getSslConfigForTemp(ssl) {
|
|
51
52
|
if (ssl === undefined || ssl === false || ssl === 'disable') {
|
|
@@ -54,7 +55,7 @@ function getSslConfigForTemp(ssl) {
|
|
|
54
55
|
if (ssl === true || ssl === 'require' || ssl === 'prefer' || ssl === 'allow') {
|
|
55
56
|
return { rejectUnauthorized: false };
|
|
56
57
|
}
|
|
57
|
-
if (typeof ssl === 'object') {
|
|
58
|
+
if (typeof ssl === 'object' && ssl !== null) {
|
|
58
59
|
return ssl;
|
|
59
60
|
}
|
|
60
61
|
return undefined;
|
|
@@ -154,13 +155,16 @@ export async function switchServerDb(args) {
|
|
|
154
155
|
const dbManager = getDbManager();
|
|
155
156
|
try {
|
|
156
157
|
await dbManager.switchServer(args.server, args.database, args.schema);
|
|
157
|
-
const
|
|
158
|
+
const connectionInfo = dbManager.getConnectionInfo();
|
|
159
|
+
const dbPart = args.database ? `, database '${args.database}'` : '';
|
|
160
|
+
const schemaPart = args.schema ? `, schema '${args.schema}'` : '';
|
|
158
161
|
return {
|
|
159
162
|
success: true,
|
|
160
|
-
message: `Successfully connected to server '${args.server}'${
|
|
161
|
-
currentServer:
|
|
162
|
-
currentDatabase:
|
|
163
|
-
currentSchema:
|
|
163
|
+
message: `Successfully connected to server '${args.server}'${dbPart}${schemaPart}`,
|
|
164
|
+
currentServer: connectionInfo.server,
|
|
165
|
+
currentDatabase: connectionInfo.database,
|
|
166
|
+
currentSchema: connectionInfo.schema,
|
|
167
|
+
context: connectionInfo.context
|
|
164
168
|
};
|
|
165
169
|
}
|
|
166
170
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-tools.js","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA4BhD;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,UAAkB,EAAE,MAAW;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAElD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;QACzC,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,eAAe,IAAI,UAAU;QAC9C,GAAG,EAAE,CAAC;QACN,iBAAiB,EAAE,IAAI;QACvB,uBAAuB,EAAE,KAAK;QAC9B,GAAG,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;KACrC,CAAC,CAAC;IAEH,kBAAkB;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,CAAC,aAAa;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;OAS/B,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"server-tools.js","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for connection management and override handling.
|
|
5
|
+
* Centralizes connection override logic to reduce duplication.
|
|
6
|
+
*/
|
|
7
|
+
import { ConnectionOverride } from '../../../types.js';
|
|
8
|
+
import { PoolClient } from 'pg';
|
|
9
|
+
/**
|
|
10
|
+
* Parameters for connection override.
|
|
11
|
+
*/
|
|
12
|
+
export interface ConnectionOverrideParams {
|
|
13
|
+
server?: string;
|
|
14
|
+
database?: string;
|
|
15
|
+
schema?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of client acquisition.
|
|
19
|
+
*/
|
|
20
|
+
export interface AcquiredClient {
|
|
21
|
+
client: PoolClient;
|
|
22
|
+
release: () => void;
|
|
23
|
+
isOverride: boolean;
|
|
24
|
+
connectionInfo?: {
|
|
25
|
+
server: string;
|
|
26
|
+
database: string;
|
|
27
|
+
schema: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build a ConnectionOverride object from optional parameters.
|
|
32
|
+
* Returns undefined if no override parameters are provided.
|
|
33
|
+
*
|
|
34
|
+
* @param params - Optional connection override parameters
|
|
35
|
+
* @returns ConnectionOverride object or undefined
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildConnectionOverride(params: ConnectionOverrideParams): ConnectionOverride | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Check if connection override parameters conflict with transaction usage.
|
|
40
|
+
*
|
|
41
|
+
* @param params - Connection override parameters
|
|
42
|
+
* @param transactionId - Transaction ID if any
|
|
43
|
+
* @throws Error if override is used with transaction
|
|
44
|
+
*/
|
|
45
|
+
export declare function validateOverrideWithTransaction(params: ConnectionOverrideParams, transactionId?: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Acquire a client with optional connection override.
|
|
48
|
+
* Handles both regular and override client acquisition.
|
|
49
|
+
*
|
|
50
|
+
* @param override - Optional connection override
|
|
51
|
+
* @returns Acquired client with release function
|
|
52
|
+
*/
|
|
53
|
+
export declare function acquireClient(override?: ConnectionOverride): Promise<AcquiredClient>;
|
|
54
|
+
/**
|
|
55
|
+
* Execute a function with an acquired client, ensuring proper cleanup.
|
|
56
|
+
*
|
|
57
|
+
* @param override - Optional connection override
|
|
58
|
+
* @param fn - Function to execute with the client
|
|
59
|
+
* @returns Result of the function
|
|
60
|
+
*/
|
|
61
|
+
export declare function withClient<T>(override: ConnectionOverride | undefined, fn: (client: PoolClient) => Promise<T>): Promise<T>;
|
|
62
|
+
/**
|
|
63
|
+
* Execute a function with a transaction, ensuring proper rollback on error.
|
|
64
|
+
*
|
|
65
|
+
* @param override - Optional connection override
|
|
66
|
+
* @param fn - Function to execute within transaction
|
|
67
|
+
* @param rollbackOnComplete - If true, rollback even on success (for dry-run)
|
|
68
|
+
* @returns Result of the function
|
|
69
|
+
*/
|
|
70
|
+
export declare function withTransaction<T>(override: ConnectionOverride | undefined, fn: (client: PoolClient) => Promise<T>, rollbackOnComplete?: boolean): Promise<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Execute a dry-run transaction (always rollback).
|
|
73
|
+
*
|
|
74
|
+
* @param override - Optional connection override
|
|
75
|
+
* @param fn - Function to execute within transaction
|
|
76
|
+
* @returns Result of the function
|
|
77
|
+
*/
|
|
78
|
+
export declare function withDryRunTransaction<T>(override: ConnectionOverride | undefined, fn: (client: PoolClient) => Promise<T>): Promise<T>;
|
|
79
|
+
//# sourceMappingURL=connection-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-utils.d.ts","sourceRoot":"","sources":["../../../../src/tools/sql/utils/connection-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,wBAAwB,GAC/B,kBAAkB,GAAG,SAAS,CAUhC;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,wBAAwB,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAQN;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAuBzB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EACtC,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|