Give each PDBMixin an init and a cache. Not used yet

This commit is contained in:
voussoir 2017-03-22 21:24:53 -07:00
parent 2ecf2e3d81
commit 55ed6a6d28
2 changed files with 32 additions and 0 deletions

View file

@ -146,6 +146,11 @@ DEFAULT_DATADIR = '.\\_etiquette'
DEFAULT_CONFIGURATION = { DEFAULT_CONFIGURATION = {
'log_level': logging.DEBUG, 'log_level': logging.DEBUG,
'cache_size_album': 200,
'cache_size_photo': 1000,
'cache_size_tag': 1000,
'cache_size_user': 200,
'enable_new_album': True, 'enable_new_album': True,
'enable_new_bookmark': True, 'enable_new_bookmark': True,
'enable_new_photo': True, 'enable_new_photo': True,

View file

@ -16,6 +16,7 @@ from . import helpers
from . import objects from . import objects
from . import searchhelpers from . import searchhelpers
from voussoirkit import cacheclass
from voussoirkit import expressionmatch from voussoirkit import expressionmatch
from voussoirkit import pathclass from voussoirkit import pathclass
from voussoirkit import safeprint from voussoirkit import safeprint
@ -252,6 +253,10 @@ def tag_export_totally_flat(tags):
class PDBAlbumMixin: class PDBAlbumMixin:
def __init__(self):
super().__init__()
self._album_cache = cacheclass.Cache()
def get_album(self, id): def get_album(self, id):
return self.get_thing_by_id('album', id) return self.get_thing_by_id('album', id)
@ -346,6 +351,9 @@ class PDBAlbumMixin:
class PDBBookmarkMixin: class PDBBookmarkMixin:
def __init__(self):
super().__init__()
def get_bookmark(self, id): def get_bookmark(self, id):
cur = self.sql.cursor() cur = self.sql.cursor()
cur.execute('SELECT * FROM bookmarks WHERE id == ?', [id]) cur.execute('SELECT * FROM bookmarks WHERE id == ?', [id])
@ -391,6 +399,10 @@ class PDBBookmarkMixin:
class PDBPhotoMixin: class PDBPhotoMixin:
def __init__(self):
super().__init__()
self._photo_cache = cacheclass.Cache()
def get_photo(self, photoid): def get_photo(self, photoid):
return self.get_thing_by_id('photo', photoid) return self.get_thing_by_id('photo', photoid)
@ -880,6 +892,10 @@ class PDBPhotoMixin:
class PDBTagMixin: class PDBTagMixin:
def __init__(self):
super().__init__()
self._tag_cache = cacheclass.Cache()
def export_tags(self, exporter=tag_export_stdout, specific_tag=None): def export_tags(self, exporter=tag_export_stdout, specific_tag=None):
''' '''
Send the top-level tags to function `exporter`. Send the top-level tags to function `exporter`.
@ -986,6 +1002,10 @@ class PDBTagMixin:
class PDBUserMixin: class PDBUserMixin:
def __init__(self):
super().__init__()
self._user_cache = cacheclass.Cache()
def generate_user_id(self): def generate_user_id(self):
''' '''
User IDs are randomized instead of integers like the other objects, User IDs are randomized instead of integers like the other objects,
@ -1118,6 +1138,8 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
self, self,
data_directory=None, data_directory=None,
): ):
super().__init__()
if data_directory is None: if data_directory is None:
data_directory = constants.DEFAULT_DATADIR data_directory = constants.DEFAULT_DATADIR
@ -1172,6 +1194,11 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
self.on_commit_queue = [] self.on_commit_queue = []
self._cached_frozen_children = None self._cached_frozen_children = None
self._album_cache.maxlen = self.config['cache_size_album']
self._photo_cache.maxlen = self.config['cache_size_photo']
self._tag_cache.maxlen = self.config['cache_size_tag']
self._user_cache.maxlen = self.config['cache_size_user']
def __repr__(self): def __repr__(self):
return 'PhotoDB(data_directory={datadir})'.format(datadir=repr(self.data_directory)) return 'PhotoDB(data_directory={datadir})'.format(datadir=repr(self.data_directory))