use 'backend' setting for selecting make-engine implementation
This commit is contained in:
parent
559c3f3281
commit
d7eaac4294
1 changed files with 15 additions and 5 deletions
|
@ -14,8 +14,8 @@
|
||||||
(defparameter *db-config* nil)
|
(defparameter *db-config* nil)
|
||||||
(defparameter *db-engine* nil)
|
(defparameter *db-engine* nil)
|
||||||
|
|
||||||
(defparameter *backends*
|
(defvar *backends*
|
||||||
'(:dbi #'dbi-make-storage))
|
'(:dbi dbi-make-engine))
|
||||||
|
|
||||||
(defvar *db-params*
|
(defvar *db-params*
|
||||||
'(:sqlite3 (:id-type integer :json-type json)
|
'(:sqlite3 (:id-type integer :json-type json)
|
||||||
|
@ -26,6 +26,15 @@
|
||||||
(params :initarg :params)
|
(params :initarg :params)
|
||||||
(config :initarg :config)))
|
(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 ()
|
(defclass storage ()
|
||||||
((engine :initarg :engine)
|
((engine :initarg :engine)
|
||||||
(db :reader db)
|
(db :reader db)
|
||||||
|
@ -45,9 +54,10 @@
|
||||||
(print sql)
|
(print sql)
|
||||||
(dbi:do-sql (db st) sql)))
|
(dbi:do-sql (db st) sql)))
|
||||||
|
|
||||||
(defun make-engine ()
|
;;; backend-/driver-specific stuff
|
||||||
(let* ((config *db-config*)
|
|
||||||
(db-type (getf config :db-type))
|
(defun dbi-make-engine (config)
|
||||||
|
(let* ((db-type (getf config :db-type))
|
||||||
(params (getf *db-params* db-type))
|
(params (getf *db-params* db-type))
|
||||||
(conn-args (getf config :connect-args)))
|
(conn-args (getf config :connect-args)))
|
||||||
(make-instance 'db-engine
|
(make-instance 'db-engine
|
||||||
|
|
Loading…
Add table
Reference in a new issue