summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Rodighiero <stefano.rodighiero@gmail.com>2019-03-24 11:35:21 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2019-04-15 18:11:02 +0200
commitf9a898d88157117dff06def41a9545620669e4b5 (patch)
tree33dc782e0fffb722cbff2a779805b12b7ff623d8
parent4f05529ac59fe7d08448d38fee6e607d161a3e5e (diff)
downloadorg-mode-f9a898d88157117dff06def41a9545620669e4b5.tar.gz
ob-sql: Option to reference connections in `sql-connection-alist'
* lisp/ob-sql.el (org-babel-find-db-connection-param): New function. Provide a new param called :dbconnection, that can be used to reference connections defined in `sql-connection-alist', a custom variable defined in sql.el. TINYCHANGE
-rw-r--r--lisp/ob-sql.el30
1 files changed, 25 insertions, 5 deletions
diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el
index 2a58188..1007e74 100644
--- a/lisp/ob-sql.el
+++ b/lisp/ob-sql.el
@@ -39,6 +39,7 @@
;; - dbport
;; - dbuser
;; - dbpassword
+;; - dbconnection (to reference connections in sql-connection-alist)
;; - database
;; - colnames (default, nil, means "yes")
;; - result-params
@@ -174,16 +175,35 @@ Otherwise, use Emacs' standard conversion function."
((string= "windows-nt" system-type) file)
(t (format "%S" (convert-standard-filename file)))))
+(defun org-babel-find-db-connection-param (params name)
+ "Return database connection parameter NAME.
+Given a parameter NAME, if :dbconnection is defined in PARAMS
+then look for the parameter into the corresponding connection
+defined in `sql-connection-alist`, otherwise look into PARAMS.
+Look `sql-connection-alist` (part of SQL mode) for how to define
+database connections."
+ (if (assq :dbconnection params)
+ (let* ((dbconnection (cdr (assq :dbconnection params)))
+ (name-mapping '((:dbhost . sql-server)
+ (:dbport . sql-port)
+ (:dbuser . sql-user)
+ (:dbpassword . sql-password)
+ (:database . sql-database)))
+ (mapped-name (cdr (assq name name-mapping))))
+ (cadr (assq mapped-name
+ (cdr (assoc dbconnection sql-connection-alist)))))
+ (cdr (assq name params))))
+
(defun org-babel-execute:sql (body params)
"Execute a block of Sql code with Babel.
This function is called by `org-babel-execute-src-block'."
(let* ((result-params (cdr (assq :result-params params)))
(cmdline (cdr (assq :cmdline params)))
- (dbhost (cdr (assq :dbhost params)))
- (dbport (cdr (assq :dbport params)))
- (dbuser (cdr (assq :dbuser params)))
- (dbpassword (cdr (assq :dbpassword params)))
- (database (cdr (assq :database params)))
+ (dbhost (org-babel-find-db-connection-param params :dbhost))
+ (dbport (org-babel-find-db-connection-param params :dbport))
+ (dbuser (org-babel-find-db-connection-param params :dbuser))
+ (dbpassword (org-babel-find-db-connection-param params :dbpassword))
+ (database (org-babel-find-db-connection-param params :database))
(engine (cdr (assq :engine params)))
(colnames-p (not (equal "no" (cdr (assq :colnames params)))))
(in-file (org-babel-temp-file "sql-in-"))