use 'backend' setting for selecting make-engine implementation

This commit is contained in:
Helmut Merz 2024-05-12 15:28:00 +02:00
parent 559c3f3281
commit d7eaac4294

View file

@ -14,8 +14,8 @@
(defparameter *db-config* nil)
(defparameter *db-engine* nil)
(defparameter *backends*
'(:dbi #'dbi-make-storage))
(defvar *backends*
'(:dbi dbi-make-engine))
(defvar *db-params*
'(:sqlite3 (:id-type integer :json-type json)
@ -26,6 +26,15 @@
(params :initarg :params)
(config :initarg :config)))
(defun make-engine ()
(let* ((config *db-config*)
(backend (getf config :backend))
(factory (getf *backends* backend)))
(print backend)
(print factory)
(print (type-of factory))
(funcall factory config)))
(defclass storage ()
((engine :initarg :engine)
(db :reader db)
@ -45,9 +54,10 @@
(print sql)
(dbi:do-sql (db st) sql)))
(defun make-engine ()
(let* ((config *db-config*)
(db-type (getf config :db-type))
;;; backend-/driver-specific stuff
(defun dbi-make-engine (config)
(let* ((db-type (getf config :db-type))
(params (getf *db-params* db-type))
(conn-args (getf config :connect-args)))
(make-instance 'db-engine