· 8 years ago · May 21, 2018, 09:38 AM
1;;;; play with sqlite
2
3(defpackage #:play-with-sqlite
4 (:nicknames #:pws)
5 (:use #:cl))
6
7(defvar *path* #p"/tmp/sqlite-file.db")
8
9(defun create-table ()
10 (sqlite:with-open-database (db *path* :busy-timeout 5000)
11 (sqlite:execute-non-query
12 db
13 "create table if not exists garbage (uuid varchar (45) primary key, name varchar (10) unique)")))
14
15(defun string-uuid ()
16 (let ((uuid (uuid:make-v1-uuid)))
17 (format nil "~a" uuid)))
18
19(defun random-name (&optional (n 10))
20 (let* ((src "abcdefghijklmnopqrstuvwxyz")
21 (lst (loop repeat n collect (elt src (random (length src))))))
22 (format nil "~{~a~}" lst)))
23
24(defun fill-garbage (&optional (n 1))
25 (sqlite:with-open-database (db *path* :busy-timeout 500)
26 (loop repeat n do
27 (sqlite:execute-non-query
28 db "insert into garbage (uuid, name) values (?, ?)"
29 (string-uuid) (random-name)))))
30
31(defun show-data ()
32 (sqlite:with-open-database (db *path* :busy-timeout 500)
33 (sqlite:execute-to-list db "select * from garbage")))