implement Database.get_version() and Database.needs_upgrade()

This commit is contained in:
Sebastian Spaeth 2010-03-18 08:50:48 +01:00
parent 23b32a7dfd
commit 8345aab10c
2 changed files with 46 additions and 1 deletions

View file

@ -1,5 +1,5 @@
import ctypes
from ctypes import c_int, c_char_p, c_void_p, c_uint64
from ctypes import c_int, c_char_p, c_void_p, c_uint, c_uint64, c_bool
from cnotmuch.globals import nmlib, STATUS, NotmuchError, Enum
import logging
from datetime import date
@ -23,6 +23,10 @@ class Database(object):
_get_path = nmlib.notmuch_database_get_path
_get_path.restype = c_char_p
"""notmuch_database_get_version"""
_get_version = nmlib.notmuch_database_get_version
_get_version.restype = c_uint
"""notmuch_database_open (const char *path, notmuch_database_mode_t mode)"""
_open = nmlib.notmuch_database_open
_open.restype = c_void_p
@ -124,6 +128,35 @@ class Database(object):
Wraps notmuch_database_get_path"""
return Database._get_path(self._db)
def get_version(self):
"""Returns the database format version
:returns: The database version as positive integer
:exception: :exc:`NotmuchError` with STATUS.NOT_INITIALIZED if
the database was not intitialized.
"""
if self._db is None:
raise NotmuchError(STATUS.NOT_INITIALIZED)
return Database._get_version (self._db)
def needs_upgrade(self):
"""Does this database need to be upgraded before writing to it?
If this function returns TRUE then no functions that modify the
database (:meth:`Database.add_message`, :meth:`Database.add_tag`,
:meth:`Directory.set_mtime`, etc.) will work unless :meth:`upgrade`
is called successfully first.
:returns: `True` or `False`
:exception: :exc:`NotmuchError` with STATUS.NOT_INITIALIZED if
the database was not intitialized.
"""
if self._db is None:
raise NotmuchError(STATUS.NOT_INITIALIZED)
return notmuch_database_needs_upgrade(self.db)
def find_message(self, msgid):
"""Returns a :class:`Message` as identified by its message ID

View file

@ -45,6 +45,18 @@ or::
.. automethod:: get_path
.. automethod:: get_version
.. automethod:: needs_upgrade
.. automethod:: upgrade
.. automethod:: get_directory
.. automethod:: add_message
.. automethod:: remove_message
.. automethod:: find_message
.. automethod:: get_all_tags