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