blob: e6f2a9c612010c766bbb4ff25824fc9ad000b8b2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
;;; magemacs-sql.el --- MageMacs SQL integration -*- lexical-binding: t; -*-
(defun magemacs/lsp-sqls-from-connection-alist ()
"Configure `lsp-sqls-connections` from `sql-connection-alist`."
(require 'lsp-sqls)
(setq lsp-sqls-connections
(mapcar
(lambda (conn)
(let* ((props (cdr conn))
(driver "postgresql")
(server (cadr (assoc 'sql-server props)))
(port (cadr (assoc 'sql-port props)))
(user (cadr (assoc 'sql-user props)))
(db (cadr (assoc 'sql-database props))))
`((driver . ,driver)
(dataSourceName . ,(format "host=%s port=%s user=%s dbname=%s sslmode=disable"
server port user db)))))
sql-connection-alist))
(message "Configured lsp-sqls-connections for %d databases"
(length lsp-sqls-connections)))
(defun magemacs/lsp-sqls-use-connection ()
"Configure `lsp-sqls` to use only the `psi` connection."
(interactive)
(require 'lsp-sqls)
(let* ((connection-name (read-string "Connection name: "))
(conn (assoc (intern connection-name) sql-connection-alist)))
(if conn
(setq-local lsp-sqls-connections
(list
(let* ((props (cdr conn))
(driver "postgresql")
(server (cadr (assoc 'sql-server props)))
(port (cadr (assoc 'sql-port props)))
(user (cadr (assoc 'sql-user props)))
(db (cadr (assoc 'sql-database props))))
`((driver . ,driver)
(dataSourceName . ,(format "host=%s port=%s user=%s dbname=%s sslmode=require"
server port user db))))))
(user-error "Could not load connection '%s'" connection-name)))
(message "lsp-sqls configured to use the specified connection"))
(defun magemacs/use-sql-connections (var)
"Replace `sql-connection-alist` with the value of VAR.
VAR should be a symbol referring to a variable that holds
an alist of SQL connection definitions."
(interactive
(list (intern
(completing-read
"Use SQL connections from variable: "
(let (vars)
(mapatoms
(lambda (sym)
(when (and (boundp sym)
(string-prefix-p "secret|" (symbol-name sym)))
(push (symbol-name sym) vars))))
vars)
nil t))))
(if (and (boundp var)
(listp (symbol-value var)))
(progn
(setq sql-connection-alist (symbol-value var))
(message "sql-connection-alist replaced with value from %s" var))
(user-error "Variable %s is not bound or not a list" var)))
(provide 'magemacs-sql)
;;; magemacs-sql.el ends here
|