diff --git a/src/sakia/app.py b/src/sakia/app.py index dd3df9b39a5daada1c6f61b3a36244145ace2768..bf04d55b84ee4b2633d728503352515769e555df 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 b79e7eb0b6b37b3b417641201f7746aced503865..4bae0a53f13a2ccc60d80cf6a69e855a24c0e661 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 5957f1c08b4e452f3c02f663fb5067758ac22401..506598acc3e4f3c7e20e5e33ec94511db3c3ab17 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')