+
+
+
+
+ DBX is not available: {status()!.reason ?? "unknown reason"}
+
+ — install: {status()!.install}
+
+
+
+
+ {error()}
+
+
+ {message()}
+
+
+
+ {/* connections */}
+
+
+
+
+
+ {loading() ? "Loading…" : "No connections yet"}
+
+
+ }
+ >
+ {(conn) => (
+
void select(conn.id)}
+ >
+
+ {conn.name}
+ {conn.db_type}
+
+ )}
+
+
+
+
+ {/* workspace */}
+
+
+
+
+
+ Select a connection
+
+ Choose a connection on the left to browse its databases and tables.
+
+
+ }
+ >
+
+
+ {/* tabs */}
+
+
+ setTab("browse")}
+ >
+ Browse
+
+ setTab("query")}
+ >
+ Query
+
+
+
+
+
+ Console
+
+
+
+
+ {/* browse tab */}
+
+
+
+ Database
+ {
+ setSelectedDB(e.currentTarget.value);
+ setDescribed(undefined);
+ void loadTables(active()!, e.currentTarget.value, appliedSchema());
+ }}
+ >
+ {(d) => {d} }
+
+
+
+ Schema
+ setSchemaInput(e.currentTarget.value)}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ setAppliedSchema(schemaInput().trim());
+ setDescribed(undefined);
+ void loadTables(active()!, selectedDB(), schemaInput().trim());
+ }
+ }}
+ />
+
+
{
+ setAppliedSchema(schemaInput().trim());
+ setDescribed(undefined);
+ void loadTables(active()!, selectedDB(), schemaInput().trim());
+ }}
+ >
+
+
+
+
+
+
+
+
+ Table
+ Kind
+
+
+
+
+
+
+ {browseBusy()
+ ? "Loading…"
+ : tablesRaw() ||
+ "No tables found. Pick a database or enter a schema name."}
+
+
+ }
+ >
+ {(t) => (
+ void describe(t.name)}
+ >
+ {t.name}
+ {t.kind}
+
+
+
+
+ )}
+
+
+
+
+
+
+
+
+ {described()!.name}
+
+ loading…
+
+
+
+ {described()!.raw ?? "No column metadata returned."}
+
+ }
+ >
+ {(t) => }
+
+
+
+
+
+ {/* query tab */}
+
+
+
+
+
+ {queryResult()!.raw ?? "No result returned."}
+
+ }
+ >
+ {(t) => (
+ setDetailRow({ columns: t().columns, row })}
+ />
+ )}
+
+
+
+
+
+ {/* redis console */}
+
+
+
+ setRedisCmd(e.currentTarget.value)}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") void runRedis();
+ }}
+ />
+ void runRedis()}
+ disabled={consoleBusy() || !redisCmd().trim()}
+ >
+
+ Run
+
+
+
+
+
Run a command to see output here.}
+ >
+ {(entry) => (
+
+
$ {entry.cmd}
+
+ {entry.out}
+
+
+ )}
+
+
+
+
+
+
+
+ {/* row detail */}
+