mirror of
https://gitlab.com/eql/lqml.git
synced 2025-12-06 02:30:38 -08:00
add new example 'qsqlite': use SQL from Lisp, load QML images from DB
This commit is contained in:
parent
a9d93035b6
commit
121170fcbd
17 changed files with 577 additions and 0 deletions
34
examples/qsqlite/lisp/db.lisp
Normal file
34
examples/qsqlite/lisp/db.lisp
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
(in-package :db)
|
||||
|
||||
(defvar *file* nil)
|
||||
|
||||
(defun query (query &rest values)
|
||||
(let ((rows (and (x:starts-with "select" query)
|
||||
(1+ (count #\, (subseq query 0 (search "from" query)))))))
|
||||
(qrun* (qt:sql-query qt:*cpp* query values rows))))
|
||||
|
||||
(defun ini ()
|
||||
(setf *file* (app:in-data-path "db"))
|
||||
(ensure-directories-exist *file*)
|
||||
(qt:ini-db qt:*cpp* (namestring *file*) *quick-view*)
|
||||
(query "create table if not exists images (id integer primary key autoincrement, name text, data blob)"))
|
||||
|
||||
(defun size ()
|
||||
(first (query "select count(*) from images")))
|
||||
|
||||
(defun save-image (name data)
|
||||
"Inserts image NAME, DATA (vector of octets) and returns the new image ID."
|
||||
(first (query "insert into images (name, data) values (?, ?)"
|
||||
name data)))
|
||||
|
||||
(defun load-images ()
|
||||
(query "select name, data from images order by id"))
|
||||
|
||||
(defun delete-image (id)
|
||||
(query "delete from images where id = ?"
|
||||
id)
|
||||
(values))
|
||||
|
||||
(defun delete-all-images ()
|
||||
(query "delete from images"))
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue