(in-package #:cl-user) (defpackage #:ritherdon-archive.db (:use #:cl) (:import-from #:ritherdon-archive.config #:config) (:import-from #:datafly #:*connection*) (:import-from #:cl-dbi #:connect-cached) (:export #:connection-settings #:db #:with-connection #:init-db)) (in-package :ritherdon-archive.db) (defun connection-settings (&optional (db :maindb)) (cdr (assoc db (config :databases)))) (defun db (&optional (db :maindb)) (apply #'connect-cached (connection-settings db))) (defmacro with-connection (conn &body body) `(let ((mito:*connection* ,conn)) ,@body))