dodb/src/scenario.lisp

33 lines
1.3 KiB
Common Lisp

(defpackage :dodb-scenario
(:use :common-lisp :dodb))
(in-package dodb-scenario)
(defstruct vehicle name color (nb-of-lights 4))
(defparameter cars (dodb:db/new "/tmp/storage/cars/"))
(dodb:db/add cars (make-vehicle :name "Corvet" :color "Red"))
(dodb:db/add cars (make-vehicle :name "Ferrari" :color "Red"))
(dodb:db/add cars (make-vehicle :name "Deudeuch" :color "Beige"))
(dodb:db/add cars (make-vehicle :name "BMW" :color "Blue"))
(dodb:db/add cars (make-vehicle :name "Suzuki Wagon" :color "Blue" :nb-of-lights 6))
(dodb:db/new-index cars "name" #'vehicle-name)
(dodb:db/new-partition cars "color" #'vehicle-color)
(dodb:db/new-partition cars "nb-of-lights" #'vehicle-nb-of-lights)
(dodb:db/new-partition cars "\ot//her\\par/tit" #'vehicle-color)
(dodb:db/new-index cars "\ot//her\\i/name/r" #'vehicle-name)
(format t "~&~S~&" cars)
(format t "db/get-by-index ~S~&" (dodb:db/get-by-index cars "name" "Corvet"))
(format t "db/get-by-partition red cars:~&")
(loop for car in (dodb:db/get-by-partition cars "color" "Red")
do (format t "- ~S~&" car))
(let ((suzuki (dodb:db/get-by-index cars "name" "Suzuki Wagon")))
(setf (vehicle-color (gethash suzuki (dodb:db-data cars))) "White")
(dodb:db/update cars suzuki))