33 lines
1.3 KiB
Common 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))
|