nomoreide 0.1.47 → 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/config-store.d.ts +2 -0
- package/dist/core/config-store.js +12 -0
- package/dist/core/config-store.js.map +1 -1
- package/dist/core/db/driver.d.ts +59 -1
- package/dist/core/db/driver.js +60 -0
- package/dist/core/db/driver.js.map +1 -1
- package/dist/core/db/mysql-driver.d.ts +11 -5
- package/dist/core/db/mysql-driver.js +60 -4
- package/dist/core/db/mysql-driver.js.map +1 -1
- package/dist/core/db/postgres-driver.d.ts +12 -5
- package/dist/core/db/postgres-driver.js +55 -6
- package/dist/core/db/postgres-driver.js.map +1 -1
- package/dist/core/db/sqlite-driver.d.ts +8 -3
- package/dist/core/db/sqlite-driver.js +64 -3
- package/dist/core/db/sqlite-driver.js.map +1 -1
- package/dist/core/db-peek.d.ts +7 -1
- package/dist/core/db-peek.js +8 -0
- package/dist/core/db-peek.js.map +1 -1
- package/dist/core/db-write.d.ts +34 -0
- package/dist/core/db-write.js +72 -0
- package/dist/core/db-write.js.map +1 -0
- package/dist/core/types.d.ts +5 -0
- package/dist/core/workflows.d.ts +76 -6
- package/dist/core/workflows.js +18 -2
- package/dist/core/workflows.js.map +1 -1
- package/dist/mcp/tools/database.d.ts +4 -3
- package/dist/mcp/tools/database.js +67 -2
- package/dist/mcp/tools/database.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +1 -1
- package/dist/web/client/assets/{code-editor-DOyUkvuQ.js → code-editor-_-MIc33z.js} +1 -1
- package/dist/web/client/assets/index-BYrd1HFJ.js +211 -0
- package/dist/web/client/assets/index-vGzOmeUL.css +1 -0
- package/dist/web/client/index.html +2 -2
- package/dist/web/routes/context.d.ts +2 -0
- package/dist/web/routes/context.js.map +1 -1
- package/dist/web/routes/database-routes.js +57 -2
- package/dist/web/routes/database-routes.js.map +1 -1
- package/dist/web/server.js +3 -0
- package/dist/web/server.js.map +1 -1
- package/package.json +2 -2
- package/dist/web/client/assets/index-BpLowAcO.js +0 -204
- package/dist/web/client/assets/index-Df0RBiTt.css +0 -1
|
@@ -14,6 +14,8 @@ export declare class ConfigStore {
|
|
|
14
14
|
selectGitRepository(name: string): Promise<NoMoreIdeConfig>;
|
|
15
15
|
registerDatabase(database: DatabaseConnection): Promise<NoMoreIdeConfig>;
|
|
16
16
|
removeDatabase(name: string): Promise<NoMoreIdeConfig>;
|
|
17
|
+
/** Lock or unlock write access for a single connection's SQL console. */
|
|
18
|
+
setDatabaseWriteAccess(name: string, unlocked: boolean): Promise<NoMoreIdeConfig>;
|
|
17
19
|
registerLogSource(source: LogSourceDefinition): Promise<NoMoreIdeConfig>;
|
|
18
20
|
removeLogSource(name: string): Promise<NoMoreIdeConfig>;
|
|
19
21
|
setGithubToken(host: string, token: string): Promise<NoMoreIdeConfig>;
|
|
@@ -54,6 +54,7 @@ const databaseSchema = z.object({
|
|
|
54
54
|
name: z.string().min(1),
|
|
55
55
|
engine: z.enum(["postgres", "mysql", "sqlite"]),
|
|
56
56
|
url: z.string().min(1),
|
|
57
|
+
writeUnlocked: z.boolean().optional(),
|
|
57
58
|
});
|
|
58
59
|
const logSourceSchema = z
|
|
59
60
|
.object({
|
|
@@ -237,6 +238,17 @@ export class ConfigStore {
|
|
|
237
238
|
await this.save(config);
|
|
238
239
|
return config;
|
|
239
240
|
}
|
|
241
|
+
/** Lock or unlock write access for a single connection's SQL console. */
|
|
242
|
+
async setDatabaseWriteAccess(name, unlocked) {
|
|
243
|
+
const config = await this.load();
|
|
244
|
+
const connection = config.databases.find((item) => item.name === name);
|
|
245
|
+
if (!connection) {
|
|
246
|
+
throw new Error(`Database connection "${name}" is not registered.`);
|
|
247
|
+
}
|
|
248
|
+
connection.writeUnlocked = unlocked;
|
|
249
|
+
await this.save(config);
|
|
250
|
+
return config;
|
|
251
|
+
}
|
|
240
252
|
async registerLogSource(source) {
|
|
241
253
|
const parsed = logSourceSchema.parse(source);
|
|
242
254
|
const config = await this.load();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/core/config-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/core/config-store.ts"],"names":[],"mappings":"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"}
|
package/dist/core/db/driver.d.ts
CHANGED
|
@@ -21,9 +21,19 @@ export interface RowSample {
|
|
|
21
21
|
limit: number;
|
|
22
22
|
offset: number;
|
|
23
23
|
}
|
|
24
|
+
/** Result of running a user-authored read-only query through the SQL console. */
|
|
25
|
+
export interface QueryResult {
|
|
26
|
+
columns: ColumnInfo[];
|
|
27
|
+
rows: Array<Record<string, unknown>>;
|
|
28
|
+
/** Number of rows returned (≤ the row cap). */
|
|
29
|
+
rowCount: number;
|
|
30
|
+
/** True when the query produced more rows than the cap; the UI flags it. */
|
|
31
|
+
truncated: boolean;
|
|
32
|
+
}
|
|
24
33
|
/**
|
|
25
34
|
* Read-only access to a single database. Implementations enforce read-only at
|
|
26
|
-
* the connection/transaction level
|
|
35
|
+
* the connection/transaction level: `runQuery` accepts user SQL but the server
|
|
36
|
+
* itself rejects any write — there is no write passthrough.
|
|
27
37
|
*/
|
|
28
38
|
export interface DbDriver {
|
|
29
39
|
readonly engine: DatabaseEngine;
|
|
@@ -31,6 +41,33 @@ export interface DbDriver {
|
|
|
31
41
|
testConnection(): Promise<void>;
|
|
32
42
|
listTables(): Promise<TableRef[]>;
|
|
33
43
|
sampleRows(table: TableRef, limit: number, offset?: number): Promise<RowSample>;
|
|
44
|
+
/** Run an arbitrary SELECT-style statement in a read-only context. */
|
|
45
|
+
runQuery(sql: string, maxRows: number): Promise<QueryResult>;
|
|
46
|
+
close(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
/** Outcome of a write run — previewed (rolled back) or committed. */
|
|
49
|
+
export interface WriteResult {
|
|
50
|
+
/** Rows the statement affected (INSERT/UPDATE/DELETE) or returned (SELECT). */
|
|
51
|
+
affectedRows: number;
|
|
52
|
+
/** Rows produced by a SELECT or RETURNING clause, if any. */
|
|
53
|
+
rows: Array<Record<string, unknown>>;
|
|
54
|
+
columns: ColumnInfo[];
|
|
55
|
+
/** True when committed; false when this was a rolled-back preview. */
|
|
56
|
+
committed: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Write-capable view of a database, deliberately separate from `DbDriver` so a
|
|
60
|
+
* read-only consumer can never reach a write. A writable connection is only
|
|
61
|
+
* ever constructed by the `DbWrite` module, behind a per-connection unlock.
|
|
62
|
+
*/
|
|
63
|
+
export interface DbWriteDriver {
|
|
64
|
+
readonly engine: DatabaseEngine;
|
|
65
|
+
/**
|
|
66
|
+
* Run a statement inside a read-write transaction. When `commit` is false the
|
|
67
|
+
* transaction is rolled back, so the caller can preview affected rows without
|
|
68
|
+
* persisting anything.
|
|
69
|
+
*/
|
|
70
|
+
executeWrite(sql: string, commit: boolean): Promise<WriteResult>;
|
|
34
71
|
close(): Promise<void>;
|
|
35
72
|
}
|
|
36
73
|
/** Defence in depth: a catalog-sourced identifier must still be well-formed. */
|
|
@@ -39,6 +76,27 @@ export declare function assertSafeIdentifier(value: string): string;
|
|
|
39
76
|
export declare function clampLimit(limit: number | undefined, fallback?: number): number;
|
|
40
77
|
/** Clamp a caller-supplied page offset to a non-negative integer. */
|
|
41
78
|
export declare function clampOffset(offset: number | undefined): number;
|
|
79
|
+
/**
|
|
80
|
+
* Normalize user SQL before we wrap it in a row-capping subquery: trim and drop
|
|
81
|
+
* a single trailing semicolon. Drivers run the result inside a read-only
|
|
82
|
+
* transaction, so a write would be rejected server-side regardless.
|
|
83
|
+
*/
|
|
84
|
+
export declare function prepareUserQuery(sql: string): string;
|
|
85
|
+
/** The leading keyword of a statement, lowercased (e.g. "select", "delete"). */
|
|
86
|
+
export declare function leadingKeyword(sql: string): string;
|
|
87
|
+
/** True for plain read statements; anything else is treated as a write. */
|
|
88
|
+
export declare function isReadStatement(sql: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Whether a write can be safely previewed by running it in a transaction and
|
|
91
|
+
* rolling back. True everywhere except MySQL DDL, which auto-commits — there a
|
|
92
|
+
* "preview" would actually apply the change, so we refuse to dry-run it.
|
|
93
|
+
*/
|
|
94
|
+
export declare function canPreviewWrite(engine: DatabaseEngine, sql: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Query results carry no catalog metadata, so synthesize ColumnInfo from the
|
|
97
|
+
* result's field names — preserving order even when zero rows come back.
|
|
98
|
+
*/
|
|
99
|
+
export declare function columnsFromNames(names: string[]): ColumnInfo[];
|
|
42
100
|
/**
|
|
43
101
|
* Drivers select `*` and return whatever the row shapes are. JSON.stringify
|
|
44
102
|
* can't serialize Buffers/BigInts/Dates cleanly, so normalize to display-safe
|
package/dist/core/db/driver.js
CHANGED
|
@@ -19,6 +19,66 @@ export function clampOffset(offset) {
|
|
|
19
19
|
return 0;
|
|
20
20
|
return Math.max(Math.trunc(offset), 0);
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Normalize user SQL before we wrap it in a row-capping subquery: trim and drop
|
|
24
|
+
* a single trailing semicolon. Drivers run the result inside a read-only
|
|
25
|
+
* transaction, so a write would be rejected server-side regardless.
|
|
26
|
+
*/
|
|
27
|
+
export function prepareUserQuery(sql) {
|
|
28
|
+
const trimmed = sql.trim().replace(/;\s*$/, "").trim();
|
|
29
|
+
if (!trimmed)
|
|
30
|
+
throw new Error("Query is empty.");
|
|
31
|
+
return trimmed;
|
|
32
|
+
}
|
|
33
|
+
/** The leading keyword of a statement, lowercased (e.g. "select", "delete"). */
|
|
34
|
+
export function leadingKeyword(sql) {
|
|
35
|
+
return /^\s*([a-z]+)/i.exec(sql)?.[1]?.toLowerCase() ?? "";
|
|
36
|
+
}
|
|
37
|
+
/** Statements we treat as reads — routed through the read-only query path. */
|
|
38
|
+
const READ_KEYWORDS = new Set([
|
|
39
|
+
"select",
|
|
40
|
+
"show",
|
|
41
|
+
"explain",
|
|
42
|
+
"pragma",
|
|
43
|
+
"describe",
|
|
44
|
+
"desc",
|
|
45
|
+
]);
|
|
46
|
+
/** True for plain read statements; anything else is treated as a write. */
|
|
47
|
+
export function isReadStatement(sql) {
|
|
48
|
+
return READ_KEYWORDS.has(leadingKeyword(sql));
|
|
49
|
+
}
|
|
50
|
+
/** DDL implicitly commits on MySQL, so a rolled-back preview can't be trusted. */
|
|
51
|
+
const DDL_KEYWORDS = new Set([
|
|
52
|
+
"create",
|
|
53
|
+
"alter",
|
|
54
|
+
"drop",
|
|
55
|
+
"truncate",
|
|
56
|
+
"rename",
|
|
57
|
+
"grant",
|
|
58
|
+
"revoke",
|
|
59
|
+
]);
|
|
60
|
+
/**
|
|
61
|
+
* Whether a write can be safely previewed by running it in a transaction and
|
|
62
|
+
* rolling back. True everywhere except MySQL DDL, which auto-commits — there a
|
|
63
|
+
* "preview" would actually apply the change, so we refuse to dry-run it.
|
|
64
|
+
*/
|
|
65
|
+
export function canPreviewWrite(engine, sql) {
|
|
66
|
+
if (engine === "mysql" && DDL_KEYWORDS.has(leadingKeyword(sql)))
|
|
67
|
+
return false;
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Query results carry no catalog metadata, so synthesize ColumnInfo from the
|
|
72
|
+
* result's field names — preserving order even when zero rows come back.
|
|
73
|
+
*/
|
|
74
|
+
export function columnsFromNames(names) {
|
|
75
|
+
return names.map((name) => ({
|
|
76
|
+
name,
|
|
77
|
+
dataType: "",
|
|
78
|
+
nullable: true,
|
|
79
|
+
primaryKey: false,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
22
82
|
/**
|
|
23
83
|
* Drivers select `*` and return whatever the row shapes are. JSON.stringify
|
|
24
84
|
* can't serialize Buffers/BigInts/Dates cleanly, so normalize to display-safe
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/core/db/driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/core/db/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import type { DatabaseEngine } from "../types.js";
|
|
2
|
-
import { type DbDriver, type RowSample, type TableRef } from "./driver.js";
|
|
2
|
+
import { type DbDriver, type DbWriteDriver, type QueryResult, type RowSample, type TableRef, type WriteResult } from "./driver.js";
|
|
3
3
|
/**
|
|
4
|
-
* MySQL / MariaDB driver.
|
|
5
|
-
* ONLY` block
|
|
4
|
+
* MySQL / MariaDB driver. Read operations run in a `START TRANSACTION READ
|
|
5
|
+
* ONLY` block, then roll back. A driver constructed with `{ writable: true }`
|
|
6
|
+
* (only the DbWrite module does this) exposes the guarded `executeWrite` path.
|
|
6
7
|
*/
|
|
7
|
-
export declare class MysqlDriver implements DbDriver {
|
|
8
|
+
export declare class MysqlDriver implements DbDriver, DbWriteDriver {
|
|
8
9
|
private readonly url;
|
|
9
10
|
readonly engine: DatabaseEngine;
|
|
10
11
|
private poolPromise;
|
|
11
|
-
|
|
12
|
+
private readonly writable;
|
|
13
|
+
constructor(url: string, options?: {
|
|
14
|
+
writable?: boolean;
|
|
15
|
+
});
|
|
12
16
|
private pool;
|
|
13
17
|
private withReadOnly;
|
|
14
18
|
testConnection(): Promise<void>;
|
|
15
19
|
listTables(): Promise<TableRef[]>;
|
|
16
20
|
sampleRows(table: TableRef, limit: number, offset?: number): Promise<RowSample>;
|
|
21
|
+
runQuery(sql: string, maxRows: number): Promise<QueryResult>;
|
|
22
|
+
executeWrite(sql: string, commit: boolean): Promise<WriteResult>;
|
|
17
23
|
private columnsFor;
|
|
18
24
|
close(): Promise<void>;
|
|
19
25
|
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { assertSafeIdentifier, clampLimit, clampOffset, normalizeRow, } from "./driver.js";
|
|
1
|
+
import { assertSafeIdentifier, clampLimit, clampOffset, columnsFromNames, normalizeRow, prepareUserQuery, } from "./driver.js";
|
|
2
2
|
/**
|
|
3
|
-
* MySQL / MariaDB driver.
|
|
4
|
-
* ONLY` block
|
|
3
|
+
* MySQL / MariaDB driver. Read operations run in a `START TRANSACTION READ
|
|
4
|
+
* ONLY` block, then roll back. A driver constructed with `{ writable: true }`
|
|
5
|
+
* (only the DbWrite module does this) exposes the guarded `executeWrite` path.
|
|
5
6
|
*/
|
|
6
7
|
export class MysqlDriver {
|
|
7
8
|
url;
|
|
8
9
|
engine = "mysql";
|
|
9
10
|
poolPromise = null;
|
|
10
|
-
|
|
11
|
+
writable;
|
|
12
|
+
constructor(url, options = {}) {
|
|
11
13
|
this.url = url;
|
|
14
|
+
this.writable = options.writable ?? false;
|
|
12
15
|
}
|
|
13
16
|
async pool() {
|
|
14
17
|
if (!this.poolPromise) {
|
|
@@ -75,6 +78,59 @@ export class MysqlDriver {
|
|
|
75
78
|
};
|
|
76
79
|
});
|
|
77
80
|
}
|
|
81
|
+
async runQuery(sql, maxRows) {
|
|
82
|
+
const statement = prepareUserQuery(sql);
|
|
83
|
+
const cap = clampLimit(maxRows);
|
|
84
|
+
return this.withReadOnly(async (conn) => {
|
|
85
|
+
// Wrap in a derived table so the row cap applies without parsing the SQL;
|
|
86
|
+
// START TRANSACTION READ ONLY rejects any write regardless.
|
|
87
|
+
const [rows, fields] = await conn.query(`SELECT * FROM (${statement}) AS _nmi_q LIMIT ?`, [cap + 1]);
|
|
88
|
+
const truncated = rows.length > cap;
|
|
89
|
+
const capped = truncated ? rows.slice(0, cap) : rows;
|
|
90
|
+
const names = (fields ?? []).map((field) => field.name);
|
|
91
|
+
return {
|
|
92
|
+
columns: columnsFromNames(names),
|
|
93
|
+
rows: capped.map((row) => normalizeRow(row)),
|
|
94
|
+
rowCount: capped.length,
|
|
95
|
+
truncated,
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async executeWrite(sql, commit) {
|
|
100
|
+
if (!this.writable)
|
|
101
|
+
throw new Error("This connection is read-only.");
|
|
102
|
+
const statement = prepareUserQuery(sql);
|
|
103
|
+
const pool = await this.pool();
|
|
104
|
+
const conn = await pool.getConnection();
|
|
105
|
+
try {
|
|
106
|
+
await conn.query("START TRANSACTION");
|
|
107
|
+
const [result, fields] = await conn.query(statement);
|
|
108
|
+
await conn.query(commit ? "COMMIT" : "ROLLBACK");
|
|
109
|
+
// A SELECT yields a row array; DML yields a ResultSetHeader.
|
|
110
|
+
if (Array.isArray(result)) {
|
|
111
|
+
const rows = result.map((row) => normalizeRow(row));
|
|
112
|
+
return {
|
|
113
|
+
affectedRows: rows.length,
|
|
114
|
+
rows,
|
|
115
|
+
columns: columnsFromNames((fields ?? []).map((field) => field.name)),
|
|
116
|
+
committed: commit,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
affectedRows: result.affectedRows ?? 0,
|
|
121
|
+
rows: [],
|
|
122
|
+
columns: [],
|
|
123
|
+
committed: commit,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
await conn.query("ROLLBACK").catch(() => { });
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
conn.release();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
78
134
|
async columnsFor(conn, name) {
|
|
79
135
|
const [rows] = await conn.query(`SELECT column_name, data_type, is_nullable, column_key
|
|
80
136
|
FROM information_schema.columns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-driver.js","sourceRoot":"","sources":["../../../src/core/db/mysql-driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mysql-driver.js","sourceRoot":"","sources":["../../../src/core/db/mysql-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import type { DatabaseEngine } from "../types.js";
|
|
2
|
-
import { type DbDriver, type RowSample, type TableRef } from "./driver.js";
|
|
2
|
+
import { type DbDriver, type DbWriteDriver, type QueryResult, type RowSample, type TableRef, type WriteResult } from "./driver.js";
|
|
3
3
|
/**
|
|
4
|
-
* Postgres driver.
|
|
5
|
-
*
|
|
4
|
+
* Postgres driver. By default every statement runs inside a `READ ONLY`
|
|
5
|
+
* transaction so a mistaken write is rejected by the server. A driver
|
|
6
|
+
* constructed with `{ writable: true }` (only the DbWrite module does this)
|
|
7
|
+
* opens a read-write pool for the guarded `executeWrite` path.
|
|
6
8
|
*/
|
|
7
|
-
export declare class PostgresDriver implements DbDriver {
|
|
9
|
+
export declare class PostgresDriver implements DbDriver, DbWriteDriver {
|
|
8
10
|
private readonly url;
|
|
9
11
|
readonly engine: DatabaseEngine;
|
|
10
12
|
private poolPromise;
|
|
11
|
-
|
|
13
|
+
private readonly writable;
|
|
14
|
+
constructor(url: string, options?: {
|
|
15
|
+
writable?: boolean;
|
|
16
|
+
});
|
|
12
17
|
private pool;
|
|
13
18
|
private withReadOnly;
|
|
14
19
|
testConnection(): Promise<void>;
|
|
15
20
|
listTables(): Promise<TableRef[]>;
|
|
16
21
|
sampleRows(table: TableRef, limit: number, offset?: number): Promise<RowSample>;
|
|
22
|
+
runQuery(sql: string, maxRows: number): Promise<QueryResult>;
|
|
23
|
+
executeWrite(sql: string, commit: boolean): Promise<WriteResult>;
|
|
17
24
|
private columnsFor;
|
|
18
25
|
close(): Promise<void>;
|
|
19
26
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { assertSafeIdentifier, clampLimit, clampOffset, normalizeRow, } from "./driver.js";
|
|
1
|
+
import { assertSafeIdentifier, clampLimit, clampOffset, columnsFromNames, normalizeRow, prepareUserQuery, } from "./driver.js";
|
|
2
2
|
/**
|
|
3
|
-
* Postgres driver.
|
|
4
|
-
*
|
|
3
|
+
* Postgres driver. By default every statement runs inside a `READ ONLY`
|
|
4
|
+
* transaction so a mistaken write is rejected by the server. A driver
|
|
5
|
+
* constructed with `{ writable: true }` (only the DbWrite module does this)
|
|
6
|
+
* opens a read-write pool for the guarded `executeWrite` path.
|
|
5
7
|
*/
|
|
6
8
|
export class PostgresDriver {
|
|
7
9
|
url;
|
|
8
10
|
engine = "postgres";
|
|
9
11
|
poolPromise = null;
|
|
10
|
-
|
|
12
|
+
writable;
|
|
13
|
+
constructor(url, options = {}) {
|
|
11
14
|
this.url = url;
|
|
15
|
+
this.writable = options.writable ?? false;
|
|
12
16
|
}
|
|
13
17
|
async pool() {
|
|
14
18
|
if (!this.poolPromise) {
|
|
@@ -18,8 +22,9 @@ export class PostgresDriver {
|
|
|
18
22
|
connectionString: this.url,
|
|
19
23
|
max: 4,
|
|
20
24
|
connectionTimeoutMillis: 8000,
|
|
21
|
-
// Belt-and-suspenders: every session
|
|
22
|
-
|
|
25
|
+
// Belt-and-suspenders: read-only pools default every session to
|
|
26
|
+
// read-only; writable pools omit it so executeWrite can persist.
|
|
27
|
+
options: this.writable ? undefined : "-c default_transaction_read_only=on",
|
|
23
28
|
});
|
|
24
29
|
})();
|
|
25
30
|
}
|
|
@@ -76,6 +81,50 @@ export class PostgresDriver {
|
|
|
76
81
|
};
|
|
77
82
|
});
|
|
78
83
|
}
|
|
84
|
+
async runQuery(sql, maxRows) {
|
|
85
|
+
const statement = prepareUserQuery(sql);
|
|
86
|
+
const cap = clampLimit(maxRows);
|
|
87
|
+
return this.withReadOnly(async (client) => {
|
|
88
|
+
// Wrap in a subquery so we can bound the result set without parsing the
|
|
89
|
+
// user's SQL; the READ ONLY transaction blocks any write regardless.
|
|
90
|
+
const result = await client.query(`SELECT * FROM (${statement}) AS _nmi_q LIMIT $1`, [cap + 1]);
|
|
91
|
+
const truncated = result.rows.length > cap;
|
|
92
|
+
const rows = (truncated ? result.rows.slice(0, cap) : result.rows).map((row) => normalizeRow(row));
|
|
93
|
+
return {
|
|
94
|
+
columns: columnsFromNames(result.fields.map((field) => field.name)),
|
|
95
|
+
rows,
|
|
96
|
+
rowCount: rows.length,
|
|
97
|
+
truncated,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
async executeWrite(sql, commit) {
|
|
102
|
+
if (!this.writable)
|
|
103
|
+
throw new Error("This connection is read-only.");
|
|
104
|
+
const statement = prepareUserQuery(sql);
|
|
105
|
+
const pool = await this.pool();
|
|
106
|
+
const client = await pool.connect();
|
|
107
|
+
try {
|
|
108
|
+
await client.query("BEGIN");
|
|
109
|
+
const result = await client.query(statement);
|
|
110
|
+
// Preview runs roll back so nothing persists; the caller sees the count.
|
|
111
|
+
await client.query(commit ? "COMMIT" : "ROLLBACK");
|
|
112
|
+
const rows = (result.rows ?? []).map((row) => normalizeRow(row));
|
|
113
|
+
return {
|
|
114
|
+
affectedRows: result.rowCount ?? rows.length,
|
|
115
|
+
rows,
|
|
116
|
+
columns: columnsFromNames((result.fields ?? []).map((field) => field.name)),
|
|
117
|
+
committed: commit,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
await client.query("ROLLBACK").catch(() => { });
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
client.release();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
79
128
|
async columnsFor(client, schema, name) {
|
|
80
129
|
const { rows } = await client.query(`SELECT c.column_name,
|
|
81
130
|
c.data_type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-driver.js","sourceRoot":"","sources":["../../../src/core/db/postgres-driver.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"postgres-driver.js","sourceRoot":"","sources":["../../../src/core/db/postgres-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import type { DatabaseEngine } from "../types.js";
|
|
2
|
-
import { type DbDriver, type RowSample, type TableRef } from "./driver.js";
|
|
2
|
+
import { type DbDriver, type DbWriteDriver, type QueryResult, type RowSample, type TableRef, type WriteResult } from "./driver.js";
|
|
3
3
|
/**
|
|
4
4
|
* SQLite driver backed by Node's built-in `node:sqlite`. The file is opened
|
|
5
5
|
* read-only, so the connection itself cannot mutate the database.
|
|
6
6
|
*/
|
|
7
|
-
export declare class SqliteDriver implements DbDriver {
|
|
7
|
+
export declare class SqliteDriver implements DbDriver, DbWriteDriver {
|
|
8
8
|
private readonly file;
|
|
9
9
|
readonly engine: DatabaseEngine;
|
|
10
10
|
private dbPromise;
|
|
11
|
-
|
|
11
|
+
private readonly writable;
|
|
12
|
+
constructor(file: string, options?: {
|
|
13
|
+
writable?: boolean;
|
|
14
|
+
});
|
|
12
15
|
private db;
|
|
13
16
|
testConnection(): Promise<void>;
|
|
14
17
|
listTables(): Promise<TableRef[]>;
|
|
15
18
|
sampleRows(table: TableRef, limit: number, offset?: number): Promise<RowSample>;
|
|
19
|
+
runQuery(sql: string, maxRows: number): Promise<QueryResult>;
|
|
20
|
+
executeWrite(sql: string, commit: boolean): Promise<WriteResult>;
|
|
16
21
|
close(): Promise<void>;
|
|
17
22
|
}
|