fakebase-studio 1.0.7 → 1.0.9
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 +2 -10
- package/package.json +1 -1
- package/server/dist/routes/connections.d.ts.map +1 -1
- package/server/dist/routes/connections.js +2 -0
- package/server/dist/routes/connections.js.map +1 -1
- package/server/dist/routes/queries.d.ts.map +1 -1
- package/server/dist/routes/queries.js +42 -9
- package/server/dist/routes/queries.js.map +1 -1
- package/server/dist/routes/tables.d.ts.map +1 -1
- package/server/dist/routes/tables.js +212 -0
- package/server/dist/routes/tables.js.map +1 -1
- package/server/dist/services/queries.service.d.ts +5 -4
- package/server/dist/services/queries.service.d.ts.map +1 -1
- package/server/dist/services/queries.service.js +90 -21
- package/server/dist/services/queries.service.js.map +1 -1
- package/ui/dist/assets/index-CSlqQoOe.css +1 -0
- package/ui/dist/assets/index-DFaoPews.js +79 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-C9faKqyl.css +0 -1
- package/ui/dist/assets/index-CTt9CUvp.js +0 -73
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
## What’s Fakebase?
|
|
2
2
|
|
|
3
|
-
Fakebase is a lightweight PostgreSQL browser built for developers who want to
|
|
3
|
+
Fakebase is a lightweight PostgreSQL browser built for developers who want to manage their postgreSQL Database - fast. No setup, no dashboards, no accounts. Connect to any PostgreSQL instance and instantly explore your tables, relationships, indexes, and schema structure in a clean, modern interface. And when you need to take action, Fakebase gives you the essentials: a built-in SQL editor and simple CRUD tools. Fakebase takes responsibility for being the simple tool: open it, connect, understand your database - and manage it with ease.
|
|
4
4
|
|
|
5
|
-
Fakebase focuses on clarity. It gives you a visual overview of your schema with interactive table relationships, lets you browse and edit table data in a structured grid, inspect foreign keys and indexes, and understand how everything connects. It doesn’t try to replace your infrastructure, migrate your schema, or sit between you and your database. It simply connects directly and
|
|
5
|
+
Fakebase focuses on clarity. It gives you a visual overview of your schema with interactive table relationships, lets you browse and edit table data in a structured grid, inspect foreign keys and indexes, and understand how everything connects. It doesn’t try to replace your infrastructure, migrate your schema, or sit between you and your database. It simply connects directly and let you manage it - clearly, reliably, and with just enough power to work efficiently.
|
|
6
6
|
|
|
7
7
|
Getting started takes one command: **npx fakebase-studio@latest**. The server starts locally and opens in your browser. Paste in your PostgreSQL connection string and start exploring. No accounts, no cloud sync, no hidden layers. Just you and your database.
|
|
8
8
|
|
|
@@ -19,11 +19,3 @@ npx fakebase-studio@latest
|
|
|
19
19
|
```
|
|
20
20
|
postgresql://user:password@host:port/database
|
|
21
21
|
```
|
|
22
|
-
|
|
23
|
-
## Security & Privacy
|
|
24
|
-
|
|
25
|
-
All data stays on your machine. Fakebase does not send telemetry or any data to our servers. Connection strings and saved queries are stored locally in `~/.fakebase-studio/` (connections and SQL in plain text). By default the server listens on localhost only; use `--host 0.0.0.0` to allow access from other devices on your network (this exposes the UI to others on that network). See [SECURITY.md](SECURITY.md) for more detail.
|
|
26
|
-
|
|
27
|
-
## License
|
|
28
|
-
|
|
29
|
-
MIT
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../routes/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../routes/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU1C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAqI/D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { loadConnections, saveConnection, removeConnectionById, updateConnectionName, } from "../services/connections.service.js";
|
|
2
|
+
import { removeQueriesByConnectionId } from "../services/queries.service.js";
|
|
2
3
|
import { sendError } from "../utils/errors.js";
|
|
3
4
|
export async function connectionsRoutes(fastify) {
|
|
4
5
|
// Get all connections
|
|
@@ -65,6 +66,7 @@ export async function connectionsRoutes(fastify) {
|
|
|
65
66
|
if (!wasRemoved) {
|
|
66
67
|
return sendError(reply, 404, "Connection not found");
|
|
67
68
|
}
|
|
69
|
+
await removeQueriesByConnectionId(id);
|
|
68
70
|
return reply.send({ success: true });
|
|
69
71
|
}
|
|
70
72
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../routes/connections.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../routes/connections.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../routes/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAS/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../routes/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAS/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIvE"}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import { loadQueries, saveQuery, removeQueryById, updateQueryName, } from "../services/queries.service.js";
|
|
2
2
|
import { sendError } from "../utils/errors.js";
|
|
3
3
|
export async function queriesRoutes(app) {
|
|
4
|
-
app.get("/api/queries",
|
|
4
|
+
app.get("/api/queries", {
|
|
5
|
+
schema: {
|
|
6
|
+
querystring: {
|
|
7
|
+
type: "object",
|
|
8
|
+
required: ["connectionId"],
|
|
9
|
+
properties: {
|
|
10
|
+
connectionId: { type: "string" },
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
}, async (request, reply) => {
|
|
15
|
+
const { connectionId } = request.query;
|
|
16
|
+
if (!connectionId) {
|
|
17
|
+
return sendError(reply, 400, new Error("connectionId is required"));
|
|
18
|
+
}
|
|
5
19
|
try {
|
|
6
|
-
const queries = await loadQueries();
|
|
20
|
+
const queries = await loadQueries(connectionId);
|
|
7
21
|
return reply.send({ success: true, data: queries });
|
|
8
22
|
}
|
|
9
23
|
catch (error) {
|
|
@@ -14,8 +28,9 @@ export async function queriesRoutes(app) {
|
|
|
14
28
|
schema: {
|
|
15
29
|
body: {
|
|
16
30
|
type: "object",
|
|
17
|
-
required: ["name", "sql"],
|
|
31
|
+
required: ["connectionId", "name", "sql"],
|
|
18
32
|
properties: {
|
|
33
|
+
connectionId: { type: "string" },
|
|
19
34
|
id: { type: "string" },
|
|
20
35
|
name: { type: "string" },
|
|
21
36
|
sql: { type: "string" },
|
|
@@ -23,9 +38,12 @@ export async function queriesRoutes(app) {
|
|
|
23
38
|
},
|
|
24
39
|
},
|
|
25
40
|
}, async (request, reply) => {
|
|
26
|
-
const { id = null, name, sql } = request.body;
|
|
41
|
+
const { connectionId, id = null, name, sql } = request.body;
|
|
42
|
+
if (!connectionId) {
|
|
43
|
+
return sendError(reply, 400, new Error("connectionId is required"));
|
|
44
|
+
}
|
|
27
45
|
try {
|
|
28
|
-
const query = await saveQuery(id, name, sql);
|
|
46
|
+
const query = await saveQuery(connectionId, id, name, sql);
|
|
29
47
|
return reply.send({ success: true, data: query });
|
|
30
48
|
}
|
|
31
49
|
catch (error) {
|
|
@@ -39,11 +57,22 @@ export async function queriesRoutes(app) {
|
|
|
39
57
|
required: ["id"],
|
|
40
58
|
properties: { id: { type: "string" } },
|
|
41
59
|
},
|
|
60
|
+
querystring: {
|
|
61
|
+
type: "object",
|
|
62
|
+
required: ["connectionId"],
|
|
63
|
+
properties: {
|
|
64
|
+
connectionId: { type: "string" },
|
|
65
|
+
},
|
|
66
|
+
},
|
|
42
67
|
},
|
|
43
68
|
}, async (request, reply) => {
|
|
44
69
|
const { id } = request.params;
|
|
70
|
+
const { connectionId } = request.query;
|
|
71
|
+
if (!connectionId) {
|
|
72
|
+
return sendError(reply, 400, new Error("connectionId is required"));
|
|
73
|
+
}
|
|
45
74
|
try {
|
|
46
|
-
const removed = await removeQueryById(id);
|
|
75
|
+
const removed = await removeQueryById(connectionId, id);
|
|
47
76
|
if (!removed)
|
|
48
77
|
return sendError(reply, 404, new Error("Query not found"));
|
|
49
78
|
return reply.send({ success: true });
|
|
@@ -56,17 +85,21 @@ export async function queriesRoutes(app) {
|
|
|
56
85
|
schema: {
|
|
57
86
|
body: {
|
|
58
87
|
type: "object",
|
|
59
|
-
required: ["id", "name"],
|
|
88
|
+
required: ["connectionId", "id", "name"],
|
|
60
89
|
properties: {
|
|
90
|
+
connectionId: { type: "string" },
|
|
61
91
|
id: { type: "string" },
|
|
62
92
|
name: { type: "string" },
|
|
63
93
|
},
|
|
64
94
|
},
|
|
65
95
|
},
|
|
66
96
|
}, async (request, reply) => {
|
|
67
|
-
const { id, name } = request.body;
|
|
97
|
+
const { connectionId, id, name } = request.body;
|
|
98
|
+
if (!connectionId) {
|
|
99
|
+
return sendError(reply, 400, new Error("connectionId is required"));
|
|
100
|
+
}
|
|
68
101
|
try {
|
|
69
|
-
const query = await updateQueryName(id, name);
|
|
102
|
+
const query = await updateQueryName(connectionId, id, name);
|
|
70
103
|
if (!query)
|
|
71
104
|
return sendError(reply, 404, new Error("Query not found"));
|
|
72
105
|
return reply.send({ success: true, data: query });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../routes/queries.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAoB;IACtD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../routes/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../routes/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../routes/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAyD/C;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAybzE"}
|
|
@@ -127,5 +127,217 @@ export async function tableDataRoutes(app) {
|
|
|
127
127
|
return sendError(reply, 500, error);
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
|
+
/**
|
|
131
|
+
* Delete rows from a table by primary key values.
|
|
132
|
+
*/
|
|
133
|
+
app.post("/api/tables/delete", {
|
|
134
|
+
schema: {
|
|
135
|
+
body: {
|
|
136
|
+
type: "object",
|
|
137
|
+
required: ["connectionString", "schema", "table", "rows"],
|
|
138
|
+
properties: {
|
|
139
|
+
connectionString: { type: "string" },
|
|
140
|
+
schema: { type: "string" },
|
|
141
|
+
table: { type: "string" },
|
|
142
|
+
rows: { type: "array", items: { type: "object" } },
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
}, async (request, reply) => {
|
|
147
|
+
const { connectionString, schema, table, rows } = request.body;
|
|
148
|
+
if (!connectionString) {
|
|
149
|
+
return sendError(reply, 400, new Error("Connection string is required"));
|
|
150
|
+
}
|
|
151
|
+
if (!schema || !SAFE_IDENTIFIER.test(schema)) {
|
|
152
|
+
return sendError(reply, 400, new Error("Invalid or missing schema name"));
|
|
153
|
+
}
|
|
154
|
+
if (!table || !SAFE_IDENTIFIER.test(table)) {
|
|
155
|
+
return sendError(reply, 400, new Error("Invalid or missing table name"));
|
|
156
|
+
}
|
|
157
|
+
if (!Array.isArray(rows) || rows.length === 0) {
|
|
158
|
+
return sendError(reply, 400, new Error("No rows provided for deletion"));
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
const pool = getOrCreatePool(connectionString);
|
|
162
|
+
const pkResult = await pool.query(`SELECT kcu.column_name
|
|
163
|
+
FROM information_schema.table_constraints tc
|
|
164
|
+
JOIN information_schema.key_column_usage kcu
|
|
165
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
166
|
+
AND tc.table_schema = kcu.table_schema
|
|
167
|
+
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
168
|
+
AND tc.table_schema = $1
|
|
169
|
+
AND tc.table_name = $2
|
|
170
|
+
ORDER BY kcu.ordinal_position`, [schema, table]);
|
|
171
|
+
const primaryKeys = pkResult.rows.map((r) => r.column_name);
|
|
172
|
+
if (primaryKeys.length === 0) {
|
|
173
|
+
return sendError(reply, 400, new Error("Table has no primary key. Cannot delete rows without a primary key."));
|
|
174
|
+
}
|
|
175
|
+
const quotedSchema = `"${schema.replace(/"/g, '""')}"`;
|
|
176
|
+
const quotedTable = `"${table.replace(/"/g, '""')}"`;
|
|
177
|
+
let totalDeleted = 0;
|
|
178
|
+
const client = await pool.connect();
|
|
179
|
+
try {
|
|
180
|
+
await client.query("BEGIN");
|
|
181
|
+
for (const row of rows) {
|
|
182
|
+
const whereClause = primaryKeys
|
|
183
|
+
.map((pk, i) => `"${pk.replace(/"/g, '""')}" = $${i + 1}`)
|
|
184
|
+
.join(" AND ");
|
|
185
|
+
const values = primaryKeys.map((pk) => row[pk]);
|
|
186
|
+
const sql = `DELETE FROM ${quotedSchema}.${quotedTable} WHERE ${whereClause}`;
|
|
187
|
+
const result = await client.query(sql, values);
|
|
188
|
+
totalDeleted += result.rowCount ?? 0;
|
|
189
|
+
}
|
|
190
|
+
await client.query("COMMIT");
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
await client.query("ROLLBACK");
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
client.release();
|
|
198
|
+
}
|
|
199
|
+
return sendSuccess(reply, { deletedCount: totalDeleted });
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
return sendError(reply, 500, error);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
/**
|
|
206
|
+
* Insert a single row into a table.
|
|
207
|
+
* Only touched fields are sent; omitted columns use their DB defaults.
|
|
208
|
+
*/
|
|
209
|
+
app.post("/api/tables/insert", {
|
|
210
|
+
schema: {
|
|
211
|
+
body: {
|
|
212
|
+
type: "object",
|
|
213
|
+
required: ["connectionString", "schema", "table", "values"],
|
|
214
|
+
properties: {
|
|
215
|
+
connectionString: { type: "string" },
|
|
216
|
+
schema: { type: "string" },
|
|
217
|
+
table: { type: "string" },
|
|
218
|
+
values: { type: "object" },
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
}, async (request, reply) => {
|
|
223
|
+
const { connectionString, schema, table, values } = request.body;
|
|
224
|
+
if (!connectionString) {
|
|
225
|
+
return sendError(reply, 400, new Error("Connection string is required"));
|
|
226
|
+
}
|
|
227
|
+
if (!schema || !SAFE_IDENTIFIER.test(schema)) {
|
|
228
|
+
return sendError(reply, 400, new Error("Invalid or missing schema name"));
|
|
229
|
+
}
|
|
230
|
+
if (!table || !SAFE_IDENTIFIER.test(table)) {
|
|
231
|
+
return sendError(reply, 400, new Error("Invalid or missing table name"));
|
|
232
|
+
}
|
|
233
|
+
if (typeof values !== "object" || values === null || Array.isArray(values)) {
|
|
234
|
+
return sendError(reply, 400, new Error("values must be a plain object"));
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
const pool = getOrCreatePool(connectionString);
|
|
238
|
+
const quotedSchema = `"${schema.replace(/"/g, '""')}"`;
|
|
239
|
+
const quotedTable = `"${table.replace(/"/g, '""')}"`;
|
|
240
|
+
const entries = Object.entries(values);
|
|
241
|
+
let sql;
|
|
242
|
+
let params;
|
|
243
|
+
if (entries.length === 0) {
|
|
244
|
+
sql = `INSERT INTO ${quotedSchema}.${quotedTable} DEFAULT VALUES`;
|
|
245
|
+
params = [];
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
const columnList = entries
|
|
249
|
+
.map(([col]) => `"${col.replace(/"/g, '""')}"`)
|
|
250
|
+
.join(", ");
|
|
251
|
+
const placeholders = entries.map((_, i) => `$${i + 1}`).join(", ");
|
|
252
|
+
params = entries.map(([, v]) => v);
|
|
253
|
+
sql = `INSERT INTO ${quotedSchema}.${quotedTable} (${columnList}) VALUES (${placeholders})`;
|
|
254
|
+
}
|
|
255
|
+
const result = await pool.query(sql, params);
|
|
256
|
+
return sendSuccess(reply, { insertedCount: result.rowCount ?? 0 });
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
return sendError(reply, 500, error);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
/**
|
|
263
|
+
* Update a single row by primary key values.
|
|
264
|
+
* Only touched fields should be included in `values`.
|
|
265
|
+
*/
|
|
266
|
+
app.post("/api/tables/update", {
|
|
267
|
+
schema: {
|
|
268
|
+
body: {
|
|
269
|
+
type: "object",
|
|
270
|
+
required: ["connectionString", "schema", "table", "pkValues", "values"],
|
|
271
|
+
properties: {
|
|
272
|
+
connectionString: { type: "string" },
|
|
273
|
+
schema: { type: "string" },
|
|
274
|
+
table: { type: "string" },
|
|
275
|
+
pkValues: { type: "object" },
|
|
276
|
+
values: { type: "object" },
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
}, async (request, reply) => {
|
|
281
|
+
const { connectionString, schema, table, pkValues, values } = request.body;
|
|
282
|
+
if (!connectionString) {
|
|
283
|
+
return sendError(reply, 400, new Error("Connection string is required"));
|
|
284
|
+
}
|
|
285
|
+
if (!schema || !SAFE_IDENTIFIER.test(schema)) {
|
|
286
|
+
return sendError(reply, 400, new Error("Invalid or missing schema name"));
|
|
287
|
+
}
|
|
288
|
+
if (!table || !SAFE_IDENTIFIER.test(table)) {
|
|
289
|
+
return sendError(reply, 400, new Error("Invalid or missing table name"));
|
|
290
|
+
}
|
|
291
|
+
if (typeof pkValues !== "object" ||
|
|
292
|
+
pkValues === null ||
|
|
293
|
+
Array.isArray(pkValues)) {
|
|
294
|
+
return sendError(reply, 400, new Error("pkValues must be a plain object"));
|
|
295
|
+
}
|
|
296
|
+
if (typeof values !== "object" || values === null || Array.isArray(values)) {
|
|
297
|
+
return sendError(reply, 400, new Error("values must be a plain object"));
|
|
298
|
+
}
|
|
299
|
+
const valueEntries = Object.entries(values);
|
|
300
|
+
if (valueEntries.length === 0) {
|
|
301
|
+
return sendSuccess(reply, { updatedCount: 0 });
|
|
302
|
+
}
|
|
303
|
+
try {
|
|
304
|
+
const pool = getOrCreatePool(connectionString);
|
|
305
|
+
const pkResult = await pool.query(`SELECT kcu.column_name
|
|
306
|
+
FROM information_schema.table_constraints tc
|
|
307
|
+
JOIN information_schema.key_column_usage kcu
|
|
308
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
309
|
+
AND tc.table_schema = kcu.table_schema
|
|
310
|
+
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
311
|
+
AND tc.table_schema = $1
|
|
312
|
+
AND tc.table_name = $2
|
|
313
|
+
ORDER BY kcu.ordinal_position`, [schema, table]);
|
|
314
|
+
const primaryKeys = pkResult.rows.map((r) => r.column_name);
|
|
315
|
+
if (primaryKeys.length === 0) {
|
|
316
|
+
return sendError(reply, 400, new Error("Table has no primary key. Cannot update rows without a primary key."));
|
|
317
|
+
}
|
|
318
|
+
const missingPk = primaryKeys.find((pk) => pkValues[pk] == null);
|
|
319
|
+
if (missingPk) {
|
|
320
|
+
return sendError(reply, 400, new Error(`Missing primary key value: ${missingPk}`));
|
|
321
|
+
}
|
|
322
|
+
const quotedSchema = `"${schema.replace(/"/g, '""')}"`;
|
|
323
|
+
const quotedTable = `"${table.replace(/"/g, '""')}"`;
|
|
324
|
+
const setClause = valueEntries
|
|
325
|
+
.map(([col], i) => `"${col.replace(/"/g, '""')}" = $${i + 1}`)
|
|
326
|
+
.join(", ");
|
|
327
|
+
const whereClause = primaryKeys
|
|
328
|
+
.map((pk, i) => `"${pk.replace(/"/g, '""')}" = $${valueEntries.length + i + 1}`)
|
|
329
|
+
.join(" AND ");
|
|
330
|
+
const params = [
|
|
331
|
+
...valueEntries.map(([, v]) => v),
|
|
332
|
+
...primaryKeys.map((pk) => pkValues[pk]),
|
|
333
|
+
];
|
|
334
|
+
const sql = `UPDATE ${quotedSchema}.${quotedTable} SET ${setClause} WHERE ${whereClause}`;
|
|
335
|
+
const result = await pool.query(sql, params);
|
|
336
|
+
return sendSuccess(reply, { updatedCount: result.rowCount ?? 0 });
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
return sendError(reply, 500, error);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
130
342
|
}
|
|
131
343
|
//# sourceMappingURL=tables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../routes/tables.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../routes/tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,9 @@ export interface SavedQuery {
|
|
|
4
4
|
sql: string;
|
|
5
5
|
updatedAt: number;
|
|
6
6
|
}
|
|
7
|
-
export declare function loadQueries(): Promise<SavedQuery[]>;
|
|
8
|
-
export declare function saveQuery(id: string | null, name: string, sql: string): Promise<SavedQuery>;
|
|
9
|
-
export declare function removeQueryById(id: string): Promise<boolean>;
|
|
10
|
-
export declare function updateQueryName(id: string, name: string): Promise<SavedQuery | null>;
|
|
7
|
+
export declare function loadQueries(connectionId: string): Promise<SavedQuery[]>;
|
|
8
|
+
export declare function saveQuery(connectionId: string, id: string | null, name: string, sql: string): Promise<SavedQuery>;
|
|
9
|
+
export declare function removeQueryById(connectionId: string, id: string): Promise<boolean>;
|
|
10
|
+
export declare function updateQueryName(connectionId: string, id: string, name: string): Promise<SavedQuery | null>;
|
|
11
|
+
export declare function removeQueriesByConnectionId(connectionId: string): Promise<void>;
|
|
11
12
|
//# sourceMappingURL=queries.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.service.d.ts","sourceRoot":"","sources":["../../services/queries.service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"queries.service.d.ts","sourceRoot":"","sources":["../../services/queries.service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AA6DD,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAmB7E;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,GAAG,IAAI,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAwCrB;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAe5B;AAED,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -8,30 +8,76 @@ async function ensureConfigDir() {
|
|
|
8
8
|
await fs.mkdir(CONFIG_DIR, { recursive: true, mode: 0o700 }).catch(() => { });
|
|
9
9
|
await fs.chmod(CONFIG_DIR, 0o700).catch(() => { });
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
function isValidQuery(q) {
|
|
12
|
+
return (q !== null &&
|
|
13
|
+
typeof q === "object" &&
|
|
14
|
+
"id" in q &&
|
|
15
|
+
"name" in q &&
|
|
16
|
+
"sql" in q &&
|
|
17
|
+
"updatedAt" in q);
|
|
18
|
+
}
|
|
19
|
+
async function loadQueriesMap() {
|
|
12
20
|
try {
|
|
13
21
|
await ensureConfigDir();
|
|
14
22
|
const data = await fs.readFile(QUERIES_FILE, "utf-8");
|
|
15
23
|
const parsed = JSON.parse(data);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
if (Array.isArray(parsed)) {
|
|
25
|
+
// Legacy format (flat array) - return it tagged so callers can migrate
|
|
26
|
+
return { __legacy__: parsed.filter(isValidQuery) };
|
|
27
|
+
}
|
|
28
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
29
|
+
// Legacy format with { queries: [...] }
|
|
30
|
+
if (Array.isArray(parsed.queries)) {
|
|
31
|
+
return { __legacy__: parsed.queries.filter(isValidQuery) };
|
|
32
|
+
}
|
|
33
|
+
// New per-connection format
|
|
34
|
+
const map = {};
|
|
35
|
+
for (const [key, val] of Object.entries(parsed)) {
|
|
36
|
+
if (Array.isArray(val)) {
|
|
37
|
+
map[key] = val.filter(isValidQuery);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return map;
|
|
41
|
+
}
|
|
42
|
+
return {};
|
|
23
43
|
}
|
|
24
44
|
catch {
|
|
25
|
-
return
|
|
45
|
+
return {};
|
|
26
46
|
}
|
|
27
47
|
}
|
|
28
|
-
async function
|
|
48
|
+
async function saveQueriesMap(map) {
|
|
29
49
|
await ensureConfigDir();
|
|
30
|
-
await fs.writeFile(QUERIES_FILE, JSON.stringify(
|
|
50
|
+
await fs.writeFile(QUERIES_FILE, JSON.stringify(map, null, 2), "utf-8");
|
|
31
51
|
await fs.chmod(QUERIES_FILE, 0o600).catch(() => { });
|
|
32
52
|
}
|
|
33
|
-
export async function
|
|
34
|
-
const
|
|
53
|
+
export async function loadQueries(connectionId) {
|
|
54
|
+
const map = await loadQueriesMap();
|
|
55
|
+
// Handle legacy migration: assign old queries to requesting connection
|
|
56
|
+
if ("__legacy__" in map && map.__legacy__.length > 0) {
|
|
57
|
+
const legacyQueries = map.__legacy__;
|
|
58
|
+
delete map.__legacy__;
|
|
59
|
+
map[connectionId] = legacyQueries;
|
|
60
|
+
await saveQueriesMap(map);
|
|
61
|
+
return legacyQueries;
|
|
62
|
+
}
|
|
63
|
+
// Clean up empty legacy key if present
|
|
64
|
+
if ("__legacy__" in map) {
|
|
65
|
+
delete map.__legacy__;
|
|
66
|
+
await saveQueriesMap(map);
|
|
67
|
+
}
|
|
68
|
+
return map[connectionId] ?? [];
|
|
69
|
+
}
|
|
70
|
+
export async function saveQuery(connectionId, id, name, sql) {
|
|
71
|
+
const map = await loadQueriesMap();
|
|
72
|
+
// Migrate legacy if present
|
|
73
|
+
if ("__legacy__" in map && map.__legacy__.length > 0) {
|
|
74
|
+
map[connectionId] = map.__legacy__;
|
|
75
|
+
delete map.__legacy__;
|
|
76
|
+
}
|
|
77
|
+
else if ("__legacy__" in map) {
|
|
78
|
+
delete map.__legacy__;
|
|
79
|
+
}
|
|
80
|
+
const queries = map[connectionId] ?? [];
|
|
35
81
|
const now = Date.now();
|
|
36
82
|
const trimmedName = name.trim() || "Untitled query";
|
|
37
83
|
if (id) {
|
|
@@ -43,7 +89,8 @@ export async function saveQuery(id, name, sql) {
|
|
|
43
89
|
sql: sql.trim(),
|
|
44
90
|
updatedAt: now,
|
|
45
91
|
};
|
|
46
|
-
|
|
92
|
+
map[connectionId] = queries;
|
|
93
|
+
await saveQueriesMap(map);
|
|
47
94
|
return queries[idx];
|
|
48
95
|
}
|
|
49
96
|
}
|
|
@@ -54,25 +101,47 @@ export async function saveQuery(id, name, sql) {
|
|
|
54
101
|
updatedAt: now,
|
|
55
102
|
};
|
|
56
103
|
queries.unshift(newQuery);
|
|
57
|
-
|
|
104
|
+
map[connectionId] = queries;
|
|
105
|
+
await saveQueriesMap(map);
|
|
58
106
|
return newQuery;
|
|
59
107
|
}
|
|
60
|
-
export async function removeQueryById(id) {
|
|
61
|
-
const
|
|
108
|
+
export async function removeQueryById(connectionId, id) {
|
|
109
|
+
const map = await loadQueriesMap();
|
|
110
|
+
if ("__legacy__" in map)
|
|
111
|
+
delete map.__legacy__;
|
|
112
|
+
const queries = map[connectionId];
|
|
113
|
+
if (!queries)
|
|
114
|
+
return false;
|
|
62
115
|
const filtered = queries.filter((q) => q.id !== id);
|
|
63
116
|
if (filtered.length === queries.length)
|
|
64
117
|
return false;
|
|
65
|
-
|
|
118
|
+
map[connectionId] = filtered;
|
|
119
|
+
await saveQueriesMap(map);
|
|
66
120
|
return true;
|
|
67
121
|
}
|
|
68
|
-
export async function updateQueryName(id, name) {
|
|
69
|
-
const
|
|
122
|
+
export async function updateQueryName(connectionId, id, name) {
|
|
123
|
+
const map = await loadQueriesMap();
|
|
124
|
+
if ("__legacy__" in map)
|
|
125
|
+
delete map.__legacy__;
|
|
126
|
+
const queries = map[connectionId];
|
|
127
|
+
if (!queries)
|
|
128
|
+
return null;
|
|
70
129
|
const q = queries.find((x) => x.id === id);
|
|
71
130
|
if (!q)
|
|
72
131
|
return null;
|
|
73
132
|
q.name = name.trim() || q.name;
|
|
74
133
|
q.updatedAt = Date.now();
|
|
75
|
-
|
|
134
|
+
map[connectionId] = queries;
|
|
135
|
+
await saveQueriesMap(map);
|
|
76
136
|
return q;
|
|
77
137
|
}
|
|
138
|
+
export async function removeQueriesByConnectionId(connectionId) {
|
|
139
|
+
const map = await loadQueriesMap();
|
|
140
|
+
if ("__legacy__" in map)
|
|
141
|
+
delete map.__legacy__;
|
|
142
|
+
if (connectionId in map) {
|
|
143
|
+
delete map[connectionId];
|
|
144
|
+
await saveQueriesMap(map);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
78
147
|
//# sourceMappingURL=queries.service.js.map
|