From d7eaac429450382d7b596d7957812c1a7e5810e6 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 12 May 2024 15:28:00 +0200 Subject: [PATCH] use 'backend' setting for selecting make-engine implementation --- storage/storage.lisp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/storage/storage.lisp b/storage/storage.lisp index 6c9bacb..197e0f0 100644 --- a/storage/storage.lisp +++ b/storage/storage.lisp @@ -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