Match worms abstract base class requirements.

This commit is contained in:
voussoir 2021-10-09 12:12:43 -07:00
parent c5b3c65ea1
commit 775287d8a8
No known key found for this signature in database
GPG key ID: 5F7554F8C26DACCB

View file

@ -1550,7 +1550,54 @@ class PhotoDB(
if self.data_directory.exists and not self.data_directory.is_dir: if self.data_directory.exists and not self.data_directory.is_dir:
raise exceptions.BadDataDirectory(self.data_directory.absolute_path) raise exceptions.BadDataDirectory(self.data_directory.absolute_path)
# DATABASE # DATABASE / WORMS
self._init_sql(create=create, skip_version_check=skip_version_check)
# THUMBNAIL DIRECTORY
self.thumbnail_directory = self.data_directory.with_child(constants.DEFAULT_THUMBDIR)
self.thumbnail_directory.makedirs(exist_ok=True)
# CONFIG
self.config_filepath = self.data_directory.with_child(constants.DEFAULT_CONFIGNAME)
self.load_config()
# WORMS
self._init_column_index()
self._init_caches()
def _check_version(self):
'''
Compare database's user_version against constants.DATABASE_VERSION,
raising exceptions.DatabaseOutOfDate if not correct.
'''
existing = self.execute('PRAGMA user_version').fetchone()[0]
if existing != constants.DATABASE_VERSION:
raise exceptions.DatabaseOutOfDate(
existing=existing,
new=constants.DATABASE_VERSION,
filepath=self.data_directory,
)
def _first_time_setup(self):
log.info('Running first-time database setup.')
self.executescript(constants.DB_INIT)
self.commit()
def _init_caches(self):
self.caches = {
objects.Album: cacheclass.Cache(maxlen=self.config['cache_size']['album']),
objects.Bookmark: cacheclass.Cache(maxlen=self.config['cache_size']['bookmark']),
objects.Photo: cacheclass.Cache(maxlen=self.config['cache_size']['photo']),
objects.Tag: cacheclass.Cache(maxlen=self.config['cache_size']['tag']),
objects.User: cacheclass.Cache(maxlen=self.config['cache_size']['user']),
'tag_exports': cacheclass.Cache(maxlen=100),
}
def _init_column_index(self):
self.COLUMNS = constants.SQL_COLUMNS
self.COLUMN_INDEX = constants.SQL_INDEX
def _init_sql(self, create, skip_version_check):
if self.ephemeral: if self.ephemeral:
existing_database = False existing_database = False
self.sql = sqlite3.connect(':memory:') self.sql = sqlite3.connect(':memory:')
@ -1572,45 +1619,6 @@ class PhotoDB(
else: else:
self._first_time_setup() self._first_time_setup()
# THUMBNAIL DIRECTORY
self.thumbnail_directory = self.data_directory.with_child(constants.DEFAULT_THUMBDIR)
self.thumbnail_directory.makedirs(exist_ok=True)
# CONFIG
self.config_filepath = self.data_directory.with_child(constants.DEFAULT_CONFIGNAME)
self.load_config()
# WORMS
self.COLUMNS = constants.SQL_COLUMNS
self.COLUMN_INDEX = constants.SQL_INDEX
self.caches = {
objects.Album: cacheclass.Cache(maxlen=self.config['cache_size']['album']),
objects.Bookmark: cacheclass.Cache(maxlen=self.config['cache_size']['bookmark']),
objects.Photo: cacheclass.Cache(maxlen=self.config['cache_size']['photo']),
objects.Tag: cacheclass.Cache(maxlen=self.config['cache_size']['tag']),
objects.User: cacheclass.Cache(maxlen=self.config['cache_size']['user']),
'tag_exports': cacheclass.Cache(maxlen=100),
}
def _check_version(self):
'''
Compare database's user_version against constants.DATABASE_VERSION,
raising exceptions.DatabaseOutOfDate if not correct.
'''
existing = self.execute('PRAGMA user_version').fetchone()[0]
if existing != constants.DATABASE_VERSION:
raise exceptions.DatabaseOutOfDate(
existing=existing,
new=constants.DATABASE_VERSION,
filepath=self.data_directory,
)
def _first_time_setup(self):
log.info('Running first-time database setup.')
self.executescript(constants.DB_INIT)
self.commit()
def _load_pragmas(self): def _load_pragmas(self):
log.debug('Reloading pragmas.') log.debug('Reloading pragmas.')
self.executescript(constants.DB_PRAGMAS) self.executescript(constants.DB_PRAGMAS)