changeset 689: |
2e7d93b892a5 |
parent: |
af486e0a40c9
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Tue, 01 Oct 2024 22:29:08 -0400 |
permissions: |
-rw-r--r-- |
description: |
cli shell tests init |
1 ;;; rdb.lisp --- RocksDB client 4 (uiop:define-package :bin/rdb 5 (:use :cl :rdb :std :cli/clap :log :clap)) 8 (rocksdb:load-rocksdb t) 9 (defopt rdb-help (print-help *cli*)) 10 (defopt rdb-version (print-version *cli*)) 11 (defopt rdb-log-level (when *arg* (setq *log-level* :debug))) 13 (defopt rdb-target-db (or *arg* "rdb")) 15 ;; (defopt rdb-config (init-rdb-user-config (parse-file-opt *arg*))) 18 (set-opt *rdb* :error-if-exists t) 20 (println (rdb-name *rdb*))) 23 (let* ((db-path (cli-opt-val (car (find-opts *cli* "db")))) 24 (*rdb* (create-db db-path :open nil))) 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." 77 :opts ((:name "level" :description "set the log level" :thunk rdb-log-level) 78 (:name "help" :description "print help" :thunk rdb-help) 79 (:name "version" :description "print version" :thunk rdb-version) 80 (:name "db" :description "target db" :thunk rdb-target-db :kind dir)) 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-cli (*rdb-cli* opts cmds args) () 93 (if (active-cmds *cli*) 94 (rdb:with-db (*rdb* (create-db (do-opt (car (find-opts *cli* "db"))))) 97 (print-help *cli*)))))