Round 278: Neo4j ext, InfluxDB ext, TimescaleDB ext, CockroachDB ext, DynamoDB ext (20 commands)

ober

2bfd6573a2fb1bdd3e01e612a9dc9650c03a7574

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index d8a6560..3299a42 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 278 — Neo4j ext, InfluxDB ext, TimescaleDB ext, CockroachDB ext, DynamoDB ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| neo4j-query | :orange_circle: | Execute Neo4j Cypher query |
+| neo4j-browse | :orange_circle: | Browse Neo4j graph |
+| neo4j-schema | :orange_circle: | Show Neo4j schema |
+| neo4j-stats | :orange_circle: | Show Neo4j database stats |
+| influxdb-query | :orange_circle: | Execute InfluxDB query |
+| influxdb-databases | :orange_circle: | List InfluxDB databases |
+| influxdb-measurements | :orange_circle: | List InfluxDB measurements |
+| influxdb-write | :orange_circle: | Write InfluxDB data point |
+| timescaledb-query | :orange_circle: | Execute TimescaleDB query |
+| timescaledb-hypertables | :orange_circle: | List TimescaleDB hypertables |
+| timescaledb-continuous-aggregates | :orange_circle: | List TimescaleDB continuous aggregates |
+| timescaledb-compression | :orange_circle: | Show TimescaleDB compression status |
+| cockroachdb-query | :orange_circle: | Execute CockroachDB query |
+| cockroachdb-nodes | :orange_circle: | List CockroachDB nodes |
+| cockroachdb-databases | :orange_circle: | List CockroachDB databases |
+| cockroachdb-ranges | :orange_circle: | List CockroachDB ranges |
+| dynamodb-scan | :orange_circle: | Scan DynamoDB table |
+| dynamodb-query | :orange_circle: | Query DynamoDB table |
+| dynamodb-tables | :orange_circle: | List DynamoDB tables |
+| dynamodb-describe | :orange_circle: | Describe DynamoDB table |
+
 ### Round 277 — Redis ext, Memcached ext, Elasticsearch ext, MongoDB ext, Cassandra ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 8c3f737..43e0111 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -21787,4 +21787,54 @@
 
 (def (cmd-cassandra-cluster-status app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Cassandra: showing cluster status")))
\ No newline at end of file
+    (echo-message! echo "Cassandra: showing cluster status")))
+
+;;; Round 278 — TimescaleDB ext, CockroachDB ext, DynamoDB ext (batch 2)
+
+(def (cmd-timescaledb-continuous-aggregates app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TimescaleDB: listing continuous aggregates")))
+
+(def (cmd-timescaledb-compression app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TimescaleDB: showing compression status")))
+
+(def (cmd-cockroachdb-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "SQL: "
+      (lambda (sql)
+        (echo-message! echo (str "CockroachDB: executing " sql))))))
+
+(def (cmd-cockroachdb-nodes app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CockroachDB: listing nodes")))
+
+(def (cmd-cockroachdb-databases app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CockroachDB: listing databases")))
+
+(def (cmd-cockroachdb-ranges app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CockroachDB: listing ranges")))
+
+(def (cmd-dynamodb-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Table: "
+      (lambda (tbl)
+        (echo-message! echo (str "DynamoDB: scanning " tbl))))))
+
+(def (cmd-dynamodb-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Table: "
+      (lambda (tbl)
+        (echo-message! echo (str "DynamoDB: querying " tbl))))))
+
+(def (cmd-dynamodb-tables app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DynamoDB: listing tables")))
+
+(def (cmd-dynamodb-describe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Table: "
+      (lambda (tbl)
+        (echo-message! echo (str "DynamoDB: describing " tbl))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index e393054..654a3af 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22420,3 +22420,49 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Elasticsearch: showing mappings")))
 
+;;; Round 278 — Neo4j ext, InfluxDB ext, TimescaleDB ext, CockroachDB ext, DynamoDB ext (batch 1)
+
+(def (cmd-neo4j-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Cypher: "
+      (lambda (cypher)
+        (echo-message! echo (str "Neo4j: executing " cypher))))))
+
+(def (cmd-neo4j-browse app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Neo4j: browsing graph")))
+
+(def (cmd-neo4j-schema app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Neo4j: showing schema")))
+
+(def (cmd-neo4j-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Neo4j: showing database stats")))
+
+(def (cmd-influxdb-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "InfluxQL: "
+      (lambda (q)
+        (echo-message! echo (str "InfluxDB: executing " q))))))
+
+(def (cmd-influxdb-databases app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "InfluxDB: listing databases")))
+
+(def (cmd-influxdb-measurements app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "InfluxDB: listing measurements")))
+
+(def (cmd-influxdb-write app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "InfluxDB: writing data point")))
+
+(def (cmd-timescaledb-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TimescaleDB: executing query")))
+
+(def (cmd-timescaledb-hypertables app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "TimescaleDB: listing hypertables")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 6e675c4..96bd44b 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7255,4 +7255,25 @@
   (register-command! 'cassandra-describe cmd-cassandra-describe)
   (register-command! 'cassandra-tables cmd-cassandra-tables)
   (register-command! 'cassandra-cluster-status cmd-cassandra-cluster-status)
+  ;; Round 278
+  (register-command! 'neo4j-query cmd-neo4j-query)
+  (register-command! 'neo4j-browse cmd-neo4j-browse)
+  (register-command! 'neo4j-schema cmd-neo4j-schema)
+  (register-command! 'neo4j-stats cmd-neo4j-stats)
+  (register-command! 'influxdb-query cmd-influxdb-query)
+  (register-command! 'influxdb-databases cmd-influxdb-databases)
+  (register-command! 'influxdb-measurements cmd-influxdb-measurements)
+  (register-command! 'influxdb-write cmd-influxdb-write)
+  (register-command! 'timescaledb-query cmd-timescaledb-query)
+  (register-command! 'timescaledb-hypertables cmd-timescaledb-hypertables)
+  (register-command! 'timescaledb-continuous-aggregates cmd-timescaledb-continuous-aggregates)
+  (register-command! 'timescaledb-compression cmd-timescaledb-compression)
+  (register-command! 'cockroachdb-query cmd-cockroachdb-query)
+  (register-command! 'cockroachdb-nodes cmd-cockroachdb-nodes)
+  (register-command! 'cockroachdb-databases cmd-cockroachdb-databases)
+  (register-command! 'cockroachdb-ranges cmd-cockroachdb-ranges)
+  (register-command! 'dynamodb-scan cmd-dynamodb-scan)
+  (register-command! 'dynamodb-query cmd-dynamodb-query)
+  (register-command! 'dynamodb-tables cmd-dynamodb-tables)
+  (register-command! 'dynamodb-describe cmd-dynamodb-describe)
 )