-
Notifications
You must be signed in to change notification settings - Fork 0
/
db.clj
27 lines (23 loc) · 1.02 KB
/
db.clj
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
(ns sqlforcql.db
(:gen-class)
(:require [qbits.alia :as alia]
[taoensso.timbre :refer [debug info]]))
(defn get-db-map
"Returns a map which contains a Cassandra cluster, session and keyspace information."
([session keyspace] (get-db-map nil session keyspace))
([cluster session keyspace]
{:cluster cluster :session session :keyspace keyspace}))
(defn connect-to-db
"Connects to a Cassandra keyspace on a particular ip-address, with the given username and password."
[ip-address username password keyspace]
(let [cluster (alia/cluster {:contact-points [ip-address]
:credentials {:user username :password password}})
session (alia/connect cluster)]
(debug "Connecting to" keyspace "on" ip-address)
(get-db-map cluster session keyspace)))
(defn disconnect-from-db
"Disconnects from Cassandra session and cluster information contained in the db-map."
[db-map]
(debug "Disconnecting... bye!")
(alia/shutdown (:session db-map))
(alia/shutdown (:cluster db-map)))