Round 277: Redis ext, Memcached ext, Elasticsearch ext, MongoDB ext, Cassandra ext (20 commands)

ober

13716de8fb9d124fddbb1ef2359d2bdf32f436be

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 82588fd..d8a6560 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 277 — Redis ext, Memcached ext, Elasticsearch ext, MongoDB ext, Cassandra ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| redis-cli | :orange_circle: | Start Redis CLI |
+| redis-get | :orange_circle: | Redis GET key |
+| redis-set | :orange_circle: | Redis SET key |
+| redis-keys | :orange_circle: | Redis KEYS pattern |
+| memcached-get | :orange_circle: | Memcached get key |
+| memcached-set | :orange_circle: | Memcached set key |
+| memcached-stats | :orange_circle: | Show Memcached stats |
+| memcached-flush | :orange_circle: | Flush all Memcached data |
+| elasticsearch-index | :orange_circle: | Inspect Elasticsearch index |
+| elasticsearch-mappings | :orange_circle: | Show Elasticsearch mappings |
+| elasticsearch-cluster-health | :orange_circle: | Check Elasticsearch cluster health |
+| elasticsearch-cat-indices | :orange_circle: | List Elasticsearch indices |
+| mongodb-collections | :orange_circle: | List MongoDB collections |
+| mongodb-stats | :orange_circle: | Show MongoDB database stats |
+| mongodb-databases | :orange_circle: | List MongoDB databases |
+| mongodb-aggregate | :orange_circle: | Run MongoDB aggregation |
+| cassandra-query | :orange_circle: | Execute Cassandra CQL query |
+| cassandra-describe | :orange_circle: | Describe Cassandra keyspace |
+| cassandra-tables | :orange_circle: | List Cassandra tables |
+| cassandra-cluster-status | :orange_circle: | Show Cassandra cluster status |
+
 ### Round 276 — Arrow ext, HDF5 ext, NetCDF ext, FITS ext, SQLite ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 89da0a6..8c3f737 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -21743,4 +21743,48 @@
 
 (def (cmd-sqlite-vacuum app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "SQLite: vacuuming database")))
\ No newline at end of file
+    (echo-message! echo "SQLite: vacuuming database")))
+
+;;; Round 277 — Elasticsearch ext, MongoDB ext, Cassandra ext (batch 2)
+
+(def (cmd-elasticsearch-cluster-health app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elasticsearch: checking cluster health")))
+
+(def (cmd-elasticsearch-cat-indices app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elasticsearch: listing indices")))
+
+(def (cmd-mongodb-collections app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MongoDB: listing collections")))
+
+(def (cmd-mongodb-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MongoDB: showing database stats")))
+
+(def (cmd-mongodb-databases app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MongoDB: listing databases")))
+
+(def (cmd-mongodb-aggregate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MongoDB: running aggregation pipeline")))
+
+(def (cmd-cassandra-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "CQL: "
+      (lambda (cql)
+        (echo-message! echo (str "Cassandra: executing " cql))))))
+
+(def (cmd-cassandra-describe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cassandra: describing keyspace")))
+
+(def (cmd-cassandra-tables app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cassandra: listing tables")))
+
+(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
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 28377f1..e393054 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22366,3 +22366,57 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "NetCDF: listing variables")))
 
+;;; Round 277 — Redis ext, Memcached ext, Elasticsearch ext, MongoDB ext, Cassandra ext (batch 1)
+
+(def (cmd-redis-cli app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Redis: starting CLI")))
+
+(def (cmd-redis-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Redis: GET " key))))))
+
+(def (cmd-redis-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Redis: SET " key))))))
+
+(def (cmd-redis-keys app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Pattern: "
+      (lambda (pat)
+        (echo-message! echo (str "Redis: KEYS " pat))))))
+
+(def (cmd-memcached-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Memcached: get " key))))))
+
+(def (cmd-memcached-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Memcached: set " key))))))
+
+(def (cmd-memcached-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Memcached: showing stats")))
+
+(def (cmd-memcached-flush app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Memcached: flushing all")))
+
+(def (cmd-elasticsearch-index app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Index: "
+      (lambda (idx)
+        (echo-message! echo (str "Elasticsearch: inspecting index " idx))))))
+
+(def (cmd-elasticsearch-mappings app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elasticsearch: showing mappings")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 5a833e8..6e675c4 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7234,4 +7234,25 @@
   (register-command! 'sqlite-tables cmd-sqlite-tables)
   (register-command! 'sqlite-schema cmd-sqlite-schema)
   (register-command! 'sqlite-vacuum cmd-sqlite-vacuum)
+  ;; Round 277
+  (register-command! 'redis-cli cmd-redis-cli)
+  (register-command! 'redis-get cmd-redis-get)
+  (register-command! 'redis-set cmd-redis-set)
+  (register-command! 'redis-keys cmd-redis-keys)
+  (register-command! 'memcached-get cmd-memcached-get)
+  (register-command! 'memcached-set cmd-memcached-set)
+  (register-command! 'memcached-stats cmd-memcached-stats)
+  (register-command! 'memcached-flush cmd-memcached-flush)
+  (register-command! 'elasticsearch-index cmd-elasticsearch-index)
+  (register-command! 'elasticsearch-mappings cmd-elasticsearch-mappings)
+  (register-command! 'elasticsearch-cluster-health cmd-elasticsearch-cluster-health)
+  (register-command! 'elasticsearch-cat-indices cmd-elasticsearch-cat-indices)
+  (register-command! 'mongodb-collections cmd-mongodb-collections)
+  (register-command! 'mongodb-stats cmd-mongodb-stats)
+  (register-command! 'mongodb-databases cmd-mongodb-databases)
+  (register-command! 'mongodb-aggregate cmd-mongodb-aggregate)
+  (register-command! 'cassandra-query cmd-cassandra-query)
+  (register-command! 'cassandra-describe cmd-cassandra-describe)
+  (register-command! 'cassandra-tables cmd-cassandra-tables)
+  (register-command! 'cassandra-cluster-status cmd-cassandra-cluster-status)
 )