]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - dbs.py
Refactor databases access
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / dbs.py
diff --git a/dbs.py b/dbs.py
new file mode 100644 (file)
index 0000000..b32afa3
--- /dev/null
+++ b/dbs.py
@@ -0,0 +1,55 @@
+import psycopg2
+import redis as _redis
+
+redis = None
+psql = None
+
+def redis_connected():
+    global redis
+    if redis is None:
+        return False
+    else:
+        try:
+            return redis.ping()
+        except Exception:
+            return False
+
+def psql_connected():
+    global psql
+    return psql is not None and psql.closed == 0
+
+def connect_redis(args):
+    global redis
+
+    redis_config = {
+            "host": args.redis_host,
+            "port": args.redis_port,
+            "db": args.redis_database,
+            }
+    if redis_config["host"].startswith("/"):
+        redis_config["unix_socket_path"] = redis_config.pop("host")
+        del(redis_config["port"])
+    del(args.redis_host)
+    del(args.redis_port)
+    del(args.redis_database)
+
+    if redis is None:
+        redis = _redis.Redis(**redis_config)
+
+def connect_psql(args):
+    global psql
+    pg_config = {
+            "host": args.db_host,
+            "port": args.db_port,
+            "user": args.db_user,
+            "password": args.db_password,
+            "database": args.db_database,
+            }
+    del(args.db_host)
+    del(args.db_port)
+    del(args.db_user)
+    del(args.db_password)
+    del(args.db_database)
+
+    if psql is None:
+        psql = psycopg2.connect(**pg_config)