Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2010-03-08 12:31:47 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2010-03-08 12:31:47 (GMT)
commit57539b6069dd3a74f72ffe374feed9e42e06b9cc (patch)
tree6b0a3f19364dd03f53adf98a27a470ba7b227c15
parentcc0892ad71362c190229ef393fedbe8d8e30012a (diff)
factor out migration logic
-rw-r--r--src/carquinyol/datastore.py37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/carquinyol/datastore.py b/src/carquinyol/datastore.py
index 306ce09..6824d90 100644
--- a/src/carquinyol/datastore.py
+++ b/src/carquinyol/datastore.py
@@ -56,23 +56,17 @@ class DataStore(dbus.service.Object):
allow_replacement=False)
dbus.service.Object.__init__(self, bus_name, DS_OBJECT_PATH)
- layout_manager = layoutmanager.get_instance()
- migrated = False
- old_version = layout_manager.get_version()
- if old_version == 0:
- migration.migrate_from_0()
- migrated = True
- elif old_version < 4:
- migrated = True
-
- if migrated:
- layout_manager.set_version(layoutmanager.CURRENT_LAYOUT_VERSION)
+ migrated = self._migrate()
self._metadata_store = MetadataStore()
self._file_store = FileStore()
self._optimizer = Optimizer(self._file_store, self._metadata_store)
self._index_store = IndexStore()
+ if migrated:
+ self._rebuild_index()
+ return
+
try:
self._index_store.open_index()
except Exception:
@@ -80,12 +74,27 @@ class DataStore(dbus.service.Object):
self._rebuild_index()
return
- if migrated:
- self._rebuild_index()
- elif not layout_manager.index_updated:
+ if not layout_manager.index_updated:
logging.debug('Index is not up-to-date, will update')
self._update_index()
+ def _migrate(self):
+ """Check version of data store on disk and migrate if necessary.
+
+ Returns True if migration was done and an index rebuild is required,
+ False otherwise.
+ """
+ layout_manager = layoutmanager.get_instance()
+ old_version = layout_manager.get_version()
+ if old_version == layoutmanager.CURRENT_LAYOUT_VERSION:
+ return False
+
+ if old_version == 0:
+ migration.migrate_from_0()
+
+ layout_manager.set_version(layoutmanager.CURRENT_LAYOUT_VERSION)
+ return True
+
def _rebuild_index(self):
"""Remove and recreate index."""
layoutmanager.get_instance().index_updated = False