diff --git a/clog.asd b/clog.asd index df521c9..56714cb 100644 --- a/clog.asd +++ b/clog.asd @@ -11,7 +11,7 @@ :pathname "source/" :depends-on (#:clack #:websocket-driver #:alexandria #:hunchentoot #:cl-ppcre #:bordeaux-threads #:trivial-open-browser #:parse-float #:quri - #:sqlite #:lack-middleware-static #:lack-request + #:sqlite #:dbi #:lack-middleware-static #:lack-request #:mgl-pax #:cl-template) :components ((:file "clog-connection") (:file "clog") diff --git a/demos/04-demo.lisp b/demos/04-demo.lisp index 2e3eb12..13a7ae3 100644 --- a/demos/04-demo.lisp +++ b/demos/04-demo.lisp @@ -11,7 +11,6 @@ (defparameter sysop-password "admin") (defvar *sql-connection*) -(defvar *site-config*) (defclass app-data () ((head @@ -49,7 +48,7 @@ (create-web-container (main app))) (defun insert-content (app new-page text-area) - (sqlite:execute-non-query + (dbi:do-sql *sql-connection* (format nil "insert into config (menu, main) values ('~A', '~A')" (escape-string (value new-page)) @@ -70,7 +69,7 @@ (insert-content app new-page text-area))))) (defun update-content (app page text-area) - (sqlite:execute-non-query + (dbi:do-sql *sql-connection* (format nil "update config set main='~A' where menu='~A'" (escape-string (value text-area)) @@ -78,7 +77,7 @@ (route-content app page)) (defun delete-content (app page) - (sqlite:execute-non-query + (dbi:do-sql *sql-connection* (format nil "delete from config where menu='~A'" page)) (reset-menu app) @@ -86,12 +85,13 @@ (defun edit-content (app page) (setf (inner-html (main app)) "") - (let ((contents (sqlite:execute-to-list - *sql-connection* - (format nil "select main from config where menu='~A'" page)))) + (let ((contents (dbi:fetch-all + (dbi:prepare + *sql-connection* + (format nil "select main from config where menu='~A'" page))))) (dolist (content contents) (let ((text-area (create-text-area (main app) :rows 10 :columns 40 - :value (car content)))) + :value (second content)))) (create-br (main app)) (set-on-click (create-button (main app) :content "Update") (lambda (obj) @@ -105,11 +105,12 @@ (defun route-content (app page) (setf (inner-html (main app)) "") - (let ((contents (sqlite:execute-to-list - *sql-connection* - (format nil "select main from config where menu='~A'" page)))) + (let ((contents (dbi:fetch-all + (dbi:prepare + *sql-connection* + (format nil "select main from config where menu='~A'" page))))) (dolist (content contents) - (setf (inner-html (main app)) (car content)) + (setf (inner-html (main app)) (second content)) (create-br (main app)) (create-br (main app)) (when (sysop app) @@ -131,14 +132,15 @@ (defun reset-menu (app) (setf (inner-html (side app)) "") - (let ((menu-items (sqlite:execute-to-list *sql-connection* - "select menu from config"))) + (let ((menu-items (dbi:fetch-all + (dbi:prepare *sql-connection* + "select menu from config")))) (dolist (menu-item menu-items) (set-on-click - (create-web-sidebar-item (side app) :content (car menu-item)) + (create-web-sidebar-item (side app) :content (second menu-item)) (lambda (obj) (declare (ignore obj)) - (route-content app (car menu-item)))))) + (route-content app (second menu-item)))))) (create-br (side app)) (if (sysop app) (progn @@ -173,20 +175,19 @@ "Start dynamic website demo." ;; The demo database is created in the clog dir (let ((db-dir (merge-pathnames "demo4.db" (clog:clog-install-dir)))) - (setf *sql-connection* (sqlite:connect db-dir)) + (setf *sql-connection* (dbi:connect :sqlite3 :database-name db-dir)) (format t "Database location: ~A~%" db-dir)) (handler-case - (setf *site-config* - (sqlite:execute-to-list *sql-connection* "select * from config")) + (dbi:fetch (dbi:prepare *sql-connection* "select * from config")) (error () (print "First run creating config.") - (sqlite:execute-non-query + (dbi:do-sql *sql-connection* "create table config (menu varchar, main varchar)") - (sqlite:execute-non-query + (dbi:do-sql *sql-connection* "insert into config (menu, main) values ('Home', 'Hello welcome.')") - (sqlite:execute-non-query + (dbi:do-sql *sql-connection* "insert into config (menu, main) values ('Page2', 'Customize Me.')"))) (initialize 'on-new-window) @@ -194,5 +195,5 @@ (defun stop-demo () "Shutdown demo and close databases." - (sqlite:disconnect *sql-connection*) + (dbi:disconnect *sql-connection*) (shutdown))