@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.
Files changed (96) hide show
  1. package/README.md +186 -10
  2. package/dist/db-manager/index.d.ts +7 -0
  3. package/dist/db-manager/index.d.ts.map +1 -0
  4. package/dist/db-manager/index.js +7 -0
  5. package/dist/db-manager/index.js.map +1 -0
  6. package/dist/db-manager/validation.d.ts +35 -0
  7. package/dist/db-manager/validation.d.ts.map +1 -0
  8. package/dist/db-manager/validation.js +54 -0
  9. package/dist/db-manager/validation.js.map +1 -0
  10. package/dist/db-manager.d.ts +175 -5
  11. package/dist/db-manager.d.ts.map +1 -1
  12. package/dist/db-manager.js +589 -26
  13. package/dist/db-manager.js.map +1 -1
  14. package/dist/index.js +141 -11
  15. package/dist/index.js.map +1 -1
  16. package/dist/tools/analysis-tools.d.ts.map +1 -1
  17. package/dist/tools/analysis-tools.js +53 -49
  18. package/dist/tools/analysis-tools.js.map +1 -1
  19. package/dist/tools/schema-tools.d.ts +40 -1
  20. package/dist/tools/schema-tools.d.ts.map +1 -1
  21. package/dist/tools/schema-tools.js +174 -92
  22. package/dist/tools/schema-tools.js.map +1 -1
  23. package/dist/tools/server-tools.d.ts +1 -0
  24. package/dist/tools/server-tools.d.ts.map +1 -1
  25. package/dist/tools/server-tools.js +10 -6
  26. package/dist/tools/server-tools.js.map +1 -1
  27. package/dist/tools/sql/utils/connection-utils.d.ts +79 -0
  28. package/dist/tools/sql/utils/connection-utils.d.ts.map +1 -0
  29. package/dist/tools/sql/utils/connection-utils.js +129 -0
  30. package/dist/tools/sql/utils/connection-utils.js.map +1 -0
  31. package/dist/tools/sql/utils/constants.d.ts +55 -0
  32. package/dist/tools/sql/utils/constants.d.ts.map +1 -0
  33. package/dist/tools/sql/utils/constants.js +55 -0
  34. package/dist/tools/sql/utils/constants.js.map +1 -0
  35. package/dist/tools/sql/utils/dry-run-utils.d.ts +31 -0
  36. package/dist/tools/sql/utils/dry-run-utils.d.ts.map +1 -0
  37. package/dist/tools/sql/utils/dry-run-utils.js +173 -0
  38. package/dist/tools/sql/utils/dry-run-utils.js.map +1 -0
  39. package/dist/tools/sql/utils/file-handler.d.ts +57 -0
  40. package/dist/tools/sql/utils/file-handler.d.ts.map +1 -0
  41. package/dist/tools/sql/utils/file-handler.js +150 -0
  42. package/dist/tools/sql/utils/file-handler.js.map +1 -0
  43. package/dist/tools/sql/utils/index.d.ts +12 -0
  44. package/dist/tools/sql/utils/index.d.ts.map +1 -0
  45. package/dist/tools/sql/utils/index.js +12 -0
  46. package/dist/tools/sql/utils/index.js.map +1 -0
  47. package/dist/tools/sql/utils/result-formatter.d.ts +94 -0
  48. package/dist/tools/sql/utils/result-formatter.d.ts.map +1 -0
  49. package/dist/tools/sql/utils/result-formatter.js +154 -0
  50. package/dist/tools/sql/utils/result-formatter.js.map +1 -0
  51. package/dist/tools/sql/utils/sql-parser.d.ts +125 -0
  52. package/dist/tools/sql/utils/sql-parser.d.ts.map +1 -0
  53. package/dist/tools/sql/utils/sql-parser.js +468 -0
  54. package/dist/tools/sql/utils/sql-parser.js.map +1 -0
  55. package/dist/tools/sql-tools.d.ts +21 -0
  56. package/dist/tools/sql-tools.d.ts.map +1 -1
  57. package/dist/tools/sql-tools.js +383 -532
  58. package/dist/tools/sql-tools.js.map +1 -1
  59. package/dist/types.d.ts +38 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/utils/retry.d.ts +1 -1
  62. package/dist/utils/retry.d.ts.map +1 -1
  63. package/dist/utils/retry.js.map +1 -1
  64. package/dist/utils/validation.d.ts +45 -9
  65. package/dist/utils/validation.d.ts.map +1 -1
  66. package/dist/utils/validation.js +335 -72
  67. package/dist/utils/validation.js.map +1 -1
  68. package/package.json +9 -2
  69. package/dist/__tests__/analysis-tools.test.d.ts +0 -2
  70. package/dist/__tests__/analysis-tools.test.d.ts.map +0 -1
  71. package/dist/__tests__/analysis-tools.test.js +0 -294
  72. package/dist/__tests__/analysis-tools.test.js.map +0 -1
  73. package/dist/__tests__/db-manager.test.d.ts +0 -2
  74. package/dist/__tests__/db-manager.test.d.ts.map +0 -1
  75. package/dist/__tests__/db-manager.test.js +0 -410
  76. package/dist/__tests__/db-manager.test.js.map +0 -1
  77. package/dist/__tests__/mcp-server.test.d.ts +0 -13
  78. package/dist/__tests__/mcp-server.test.d.ts.map +0 -1
  79. package/dist/__tests__/mcp-server.test.js +0 -146
  80. package/dist/__tests__/mcp-server.test.js.map +0 -1
  81. package/dist/__tests__/schema-tools.test.d.ts +0 -2
  82. package/dist/__tests__/schema-tools.test.d.ts.map +0 -1
  83. package/dist/__tests__/schema-tools.test.js +0 -171
  84. package/dist/__tests__/schema-tools.test.js.map +0 -1
  85. package/dist/__tests__/server-tools.test.d.ts +0 -2
  86. package/dist/__tests__/server-tools.test.d.ts.map +0 -1
  87. package/dist/__tests__/server-tools.test.js +0 -113
  88. package/dist/__tests__/server-tools.test.js.map +0 -1
  89. package/dist/__tests__/sql-tools.test.d.ts +0 -2
  90. package/dist/__tests__/sql-tools.test.d.ts.map +0 -1
  91. package/dist/__tests__/sql-tools.test.js +0 -1912
  92. package/dist/__tests__/sql-tools.test.js.map +0 -1
  93. package/dist/__tests__/validation.test.d.ts +0 -2
  94. package/dist/__tests__/validation.test.d.ts.map +0 -1
  95. package/dist/__tests__/validation.test.js +0 -203
  96. 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.query(query);
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
- // Validate filter if provided
29
- if (args.filter) {
30
- // Allow more characters in filter since it's used with ILIKE and parameterized
31
- if (args.filter.length > 128) {
32
- throw new Error('filter must be 128 characters or less');
33
- }
34
- // Only allow safe characters in filter
35
- if (!/^[a-zA-Z0-9_% ]+$/.test(args.filter)) {
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
- const objects = [];
42
- // List tables
43
- if (objectType === 'all' || objectType === 'table') {
44
- const tablesQuery = `
45
- SELECT
46
- tablename as name,
47
- 'table' as type,
48
- tableowner as owner,
49
- schemaname as schema
50
- FROM pg_catalog.pg_tables
51
- WHERE schemaname = $1
52
- ${args.filter ? "AND tablename ILIKE '%' || $2 || '%'" : ''}
53
- ORDER BY tablename
54
- `;
55
- const params = args.filter ? [args.schema, args.filter] : [args.schema];
56
- const tables = await dbManager.query(tablesQuery, params);
57
- objects.push(...tables.rows);
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
- // List extensions (schema-independent but we can filter)
98
- if (objectType === 'all' || objectType === 'extension') {
99
- const extensionsQuery = `
100
- SELECT
101
- extname as name,
102
- 'extension' as type,
103
- n.nspname as schema,
104
- COALESCE(extowner::regrole::text, '') as owner
105
- FROM pg_extension e
106
- JOIN pg_namespace n ON e.extnamespace = n.oid
107
- WHERE n.nspname = $1
108
- ${args.filter ? "AND extname ILIKE '%' || $2 || '%'" : ''}
109
- ORDER BY extname
110
- `;
111
- const params = args.filter ? [args.schema, args.filter] : [args.schema];
112
- const extensions = await dbManager.query(extensionsQuery, params);
113
- objects.push(...extensions.rows);
114
- }
115
- return objects;
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.query(columnsQuery, [args.schema, args.objectName]);
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.query(constraintsQuery, [args.schema, args.objectName]);
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.query(indexesQuery, [args.schema, args.objectName]);
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.query(sizeQuery, [args.schema, args.objectName]);
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.query(viewDefQuery, [args.schema, args.objectName]);
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":"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"}
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"}
@@ -51,6 +51,7 @@ export declare function switchServerDb(args: {
51
51
  currentServer: string;
52
52
  currentDatabase: string;
53
53
  currentSchema: string;
54
+ context?: string;
54
55
  }>;
55
56
  /**
56
57
  * Gets the current connection details including server, database, schema, and access mode.
@@ -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;AAmED;;;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,CAAA;CAAE,CAAC,CAiBxH;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAGpE"}
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 state = dbManager.getCurrentState();
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}'${args.database ? `, database '${args.database}'` : ''}${args.schema ? `, schema '${args.schema}'` : ''}`,
161
- currentServer: state.currentServer,
162
- currentDatabase: state.currentDatabase,
163
- currentSchema: state.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":"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"}
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"}