changeset 561: |
42bc1432f217 |
parent: |
b9c64be96888
|
child: |
32995daa9a07 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 26 Jul 2024 23:55:27 -0400 |
permissions: |
-rw-r--r-- |
description: |
bin updates |
1 ;;; rdb.lisp --- RocksDB client 4 (uiop:define-package :bin/rdb 5 (:use :cl :rdb :std :cli/clap :log :clap) 9 (rocksdb:load-rocksdb t) 10 (defopt rdb-help (print-help *cli*)) 11 (defopt rdb-version (print-version *cli*)) 12 (defopt rdb-log-level (when *arg* (setq *log-level* :debug))) 14 (defopt rdb-target-db (setq *rdb* (create-db (or *arg* "rdb") :open nil))) 16 ;; (defopt rdb-config (init-rdb-user-config (parse-file-opt *arg*))) 19 (set-opt *rdb* :error-if-exists t) 21 (println (rdb-name *rdb*))) 24 (let ((db-path (cli-opt-val (car (find-opts *cli* "db"))))) 25 (if (and (null db-path) (zerop *argc*)) 26 (mapc (lambda (x) (println (format nil "~a ~a" (car x) (cdr x)))) 27 (hash-table-alist (backfill-opts (default-rdb-opts) :full t))) 28 (with-db (db (create-db db-path :open t)) 29 (println (hash-table-alist (backfill-opts db))) 30 (with-iter (it (create-iter db)) 31 (iter-seek-to-first it) 32 (loop while (iter-valid-p it) 35 (sb-ext:octets-to-string (iter-key it) :external-format '(:ascii :replacement #\_)) 38 finally (rocksdb::rocksdb-iter-destroy %it))))))) 42 (rdb-error "missing args: KEY VAL") 45 (insert-key db (pop *args*) (pop *args*))))) 49 (rdb-error "missing arg: KEY") 52 (when-let ((val (get-key db (car *args*)))) 61 (let ((val (make-array 32 :element-type 'octet))) 62 (dotimes (i (if (zerop *argc*) 1000 (parse-integer (car *args*)))) 64 (let ((seed (random 32))) 66 (setf (aref val ii) (random 256)))) 69 (sb-ext:string-to-octets (string (gensym "foo"))) 76 :description "A simple helper for RocksDB." 78 (:name "level" :global t :description "set the log level" :thunk rdb-log-level) 79 (:name "help" :global t :description "print help" :thunk rdb-help) 80 (:name "version" :global t :description "print version" :thunk rdb-version) 81 (:name "db" :global t :description "target db" :thunk rdb-target-db :kind dir)) 83 (:name new :thunk rdb-new) 84 (:name show :thunk rdb-show) 85 (:name set :thunk rdb-set) 86 (:name get :thunk rdb-get) 87 (:name fuzz :thunk rdb-fuzz) 88 (:name destroy :thunk rdb-destroy))) 91 (let ((*log-level* :info)) 92 (with-slots (opts cmds args) *cli* 93 ;; FIXME 2024-05-07: needs to be triggered explicitly - need to support 94 ;; running global opt thunks even when no arg present - macro key 95 (if (active-cmds *cli*) 96 (prog2 (do-opt (car (find-opts *cli* "db"))) 99 (print-help *cli*)))))