Public archive for the Return to Ritherdon project.
https://www.nicolaellisandritherdon.com
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tree:
9650008ce9
master
stable
unstable
${ noResults }
ritherdon-archive/hunchentoot-example/src/database.lisp
31 lines
855 B
31 lines
855 B
(in-package :ritherdon-archive/models)
|
|||
;;;
|
|||
;;; DB connection, migrations.
|
|||
;;;
|
|||
|
|||
(defparameter *tables* '(product user)
|
|||
"List of the DB tables that need to be checked for migrations.")
|
|||
|
|||
(defun connect (&optional (db-name *db-name*))
|
|||
"Connect to the DB."
|
|||
;; *db* could be mito:*connection*
|
|||
(log:debug "connecting to ~a~&" *db-name*)
|
|||
(setf *db* (mito:connect-toplevel :sqlite3 :database-name db-name)))
|
|||
|
|||
(defun ensure-tables-exist ()
|
|||
"Run SQL to create the missing tables."
|
|||
(unless mito::*connection*
|
|||
(connect))
|
|||
(mapcar #'mito:ensure-table-exists *tables*))
|
|||
|
|||
(defun migrate-all ()
|
|||
"Migrate the tables after we changed the class definition."
|
|||
(mapcar #'mito:migrate-table *tables*))
|
|||
|
|||
;;
|
|||
;; Entry points
|
|||
;;
|
|||
(defun init-db ()
|
|||
"Connect to the DB, run the required migrations and define a couple base user roles."
|
|||
(ensure-tables-exist))
|