From 4d3b7f377bd3f666dc68a795a7a06413e68793d6 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Wed, 11 Jan 2017 20:13:43 +0100
Subject: [PATCH] Select database as an option

---
 src/sakia/app.py                    | 2 +-
 src/sakia/data/repositories/meta.py | 5 ++---
 src/sakia/options.py                | 7 +++++++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/sakia/app.py b/src/sakia/app.py
index dd3df9b3..bf04d55b 100644
--- a/src/sakia/app.py
+++ b/src/sakia/app.py
@@ -90,7 +90,7 @@ class Application(QObject):
         :return:
         """
         self.parameters = UserParametersFile.in_config_path(self.options.config_path, profile_name).load_or_init()
-        self.db = SakiaDatabase.load_or_init(self.options.config_path, profile_name)
+        self.db = SakiaDatabase.load_or_init(self.options, profile_name)
 
         self.instanciate_services()
 
diff --git a/src/sakia/data/repositories/meta.py b/src/sakia/data/repositories/meta.py
index b79e7eb0..4bae0a53 100644
--- a/src/sakia/data/repositories/meta.py
+++ b/src/sakia/data/repositories/meta.py
@@ -28,14 +28,13 @@ class SakiaDatabase:
     sources_repo = attr.ib(default=None)
     dividends_repo = attr.ib(default=None)
     _logger = attr.ib(default=attr.Factory(lambda: logging.getLogger('sakia')))
-    db_file = 'sakia.db'
 
     @classmethod
-    def load_or_init(cls, config_path, profile_name):
+    def load_or_init(cls, options, profile_name):
         sqlite3.register_adapter(BlockUID, str)
         sqlite3.register_adapter(bool, int)
         sqlite3.register_converter("BOOLEAN", lambda v: bool(int(v)))
-        con = sqlite3.connect(os.path.join(config_path, profile_name, SakiaDatabase.db_file),
+        con = sqlite3.connect(os.path.join(options.config_path, profile_name, options.database + ".db"),
                               detect_types=sqlite3.PARSE_DECLTYPES)
         meta = SakiaDatabase(con, ConnectionsRepo(con), IdentitiesRepo(con),
                              BlockchainsRepo(con), CertificationsRepo(con), TransactionsRepo(con),
diff --git a/src/sakia/options.py b/src/sakia/options.py
index 5957f1c0..506598ac 100644
--- a/src/sakia/options.py
+++ b/src/sakia/options.py
@@ -27,6 +27,7 @@ def config_path_factory():
 @attr.s()
 class SakiaOptions:
     config_path = attr.ib(default=attr.Factory(config_path_factory))
+    database = attr.ib(default="sakia")
     _logger = attr.ib(default=attr.Factory(lambda: logging.getLogger('sakia')))
 
     @classmethod
@@ -50,8 +51,14 @@ class SakiaOptions:
                           action="store_true", dest="debug", default=False,
                           help="Print DEBUG messages to stdout")
 
+        parser.add_option("--database",  dest="database", default="sakia",
+                          help="Select another database filename")
+
         (options, args) = parser.parse_args(argv)
 
+        if options.database:
+            self.database = options.database
+
         if options.debug:
             self._logger.setLevel(logging.DEBUG)
             formatter = logging.Formatter('%(levelname)s:%(module)s:%(funcName)s:%(message)s')
-- 
GitLab