diff --git a/src/calibre/db/legacy.py b/src/calibre/db/legacy.py index 5f04dd18b2..4c825247e9 100644 --- a/src/calibre/db/legacy.py +++ b/src/calibre/db/legacy.py @@ -73,6 +73,14 @@ class LibraryDatabase(object): setattr(self, func, partial(self.field_id_map, field)) self.all_tags = lambda : list(self.all_tag_names()) + for func in ( + 'standard_field_keys', 'custom_field_keys', 'all_field_keys', + 'searchable_fields', 'sortable_field_keys', + 'search_term_to_field_key', 'custom_field_metadata', + 'all_metadata'): + setattr(self, func, getattr(self.field_metadata, func)) + self.metadata_for_field = self.field_metadata.get + self.last_update_check = self.last_modified() def close(self): @@ -273,6 +281,11 @@ class LibraryDatabase(object): return list(self.new_api.get_ids_for_custom_book_data(name)) # }}} + def get_field(self, index, key, default=None, index_is_id=False): + book_id = index if index_is_id else self.data.index_to_id(index) + mi = self.new_api.get_metadata(book_id, get_cover=key == 'cover') + return mi.get(key, default) + # Private interface {{{ def __iter__(self): diff --git a/src/calibre/db/tests/legacy.py b/src/calibre/db/tests/legacy.py index b7fd99378a..6413dc0d8f 100644 --- a/src/calibre/db/tests/legacy.py +++ b/src/calibre/db/tests/legacy.py @@ -149,7 +149,15 @@ class LegacyTest(BaseTest): 'all_publishers':[()], 'all_titles':[()], 'all_series':[()], + 'standard_field_keys':[()], + 'all_field_keys':[()], + 'searchable_fields':[()], + 'search_term_to_field_key':[('author',), ('tag',)], + 'metadata_for_field':[('title',), ('tags',)], + 'sortable_field_keys':[()], + 'custom_field_keys':[(True,), (False,)], 'get_usage_count_by_id':[('authors',), ('tags',), ('series',), ('publisher',), ('#tags',), ('languages',)], + 'get_field':[(1, 'title'), (2, 'tags'), (0, 'rating'), (1, 'authors'), (2, 'series'), (1, '#tags')], }.iteritems(): for a in args: fmt = lambda x: x diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 0540e8ede4..bd3f155c9d 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -776,10 +776,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return self.field_metadata.sortable_field_keys() def searchable_fields(self): - return self.field_metadata.searchable_field_keys() + return self.field_metadata.searchable_fields() def search_term_to_field_key(self, term): - return self.field_metadata.search_term_to_key(term) + return self.field_metadata.search_term_to_field_key(term) def custom_field_metadata(self, include_composites=True): return self.field_metadata.custom_field_metadata(include_composites)