Move SQL heavy lifting to its own Mixin.
This commit is contained in:
parent
e4e542a8a6
commit
576fac416a
1 changed files with 62 additions and 50 deletions
|
@ -681,6 +681,60 @@ class PDBPhotoMixin:
|
|||
print('Search results took:', end_time - start_time)
|
||||
|
||||
|
||||
class PDBSQLMixin:
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.on_commit_queue = []
|
||||
|
||||
def close(self):
|
||||
self.sql.close()
|
||||
if self.ephemeral:
|
||||
self.ephemeral_directory.cleanup()
|
||||
|
||||
def commit(self):
|
||||
while self.on_commit_queue:
|
||||
task = self.on_commit_queue.pop()
|
||||
print(task)
|
||||
args = task.get('args', [])
|
||||
kwargs = task.get('kwargs', {})
|
||||
task['action'](*args, **kwargs)
|
||||
self.sql.commit()
|
||||
|
||||
def sql_delete(self, table, pairs, *, commit=False):
|
||||
cur = self.sql.cursor()
|
||||
|
||||
(qmarks, bindings) = sqlhelpers.delete_filler(pairs)
|
||||
query = 'DELETE FROM %s %s' % (table, qmarks)
|
||||
#self.log.debug(query)
|
||||
cur.execute(query, bindings)
|
||||
|
||||
if commit:
|
||||
self.commit()
|
||||
|
||||
def sql_insert(self, table, data, *, commit=False):
|
||||
column_names = constants.SQL_COLUMNS[table]
|
||||
cur = self.sql.cursor()
|
||||
|
||||
(qmarks, bindings) = sqlhelpers.insert_filler(column_names, data)
|
||||
query = 'INSERT INTO %s VALUES(%s)' % (table, qmarks)
|
||||
#self.log.debug(query)
|
||||
cur.execute(query, bindings)
|
||||
|
||||
if commit:
|
||||
self.commit()
|
||||
|
||||
def sql_update(self, table, pairs, where_key, *, commit=False):
|
||||
cur = self.sql.cursor()
|
||||
|
||||
(qmarks, bindings) = sqlhelpers.update_filler(pairs, where_key=where_key)
|
||||
query = 'UPDATE %s %s' % (table, qmarks)
|
||||
#self.log.debug(query)
|
||||
cur.execute(query, bindings)
|
||||
|
||||
if commit:
|
||||
self.commit()
|
||||
|
||||
|
||||
class PDBTagMixin:
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
@ -945,7 +999,14 @@ class PDBUserMixin:
|
|||
return objects.User(self, data)
|
||||
|
||||
|
||||
class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUserMixin):
|
||||
class PhotoDB(
|
||||
PDBAlbumMixin,
|
||||
PDBBookmarkMixin,
|
||||
PDBPhotoMixin,
|
||||
PDBSQLMixin,
|
||||
PDBTagMixin,
|
||||
PDBUserMixin,
|
||||
):
|
||||
def __init__(
|
||||
self,
|
||||
data_directory=None,
|
||||
|
@ -999,7 +1060,6 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
|||
|
||||
# OTHER
|
||||
|
||||
self.on_commit_queue = []
|
||||
self._cached_frozen_children = None
|
||||
|
||||
self._album_cache.maxlen = self.config['cache_size']['album']
|
||||
|
@ -1065,20 +1125,6 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
|||
def _uncache(self):
|
||||
self._cached_frozen_children = None
|
||||
|
||||
def close(self):
|
||||
self.sql.close()
|
||||
if self.ephemeral:
|
||||
self.ephemeral_directory.cleanup()
|
||||
|
||||
def commit(self):
|
||||
while self.on_commit_queue:
|
||||
task = self.on_commit_queue.pop()
|
||||
print(task)
|
||||
args = task.get('args', [])
|
||||
kwargs = task.get('kwargs', {})
|
||||
task['action'](*args, **kwargs)
|
||||
self.sql.commit()
|
||||
|
||||
@decorators.transaction
|
||||
def digest_directory(
|
||||
self,
|
||||
|
@ -1326,40 +1372,6 @@ class PhotoDB(PDBAlbumMixin, PDBBookmarkMixin, PDBPhotoMixin, PDBTagMixin, PDBUs
|
|||
thing = thing_map['class'](self, db_row=thing)
|
||||
yield thing
|
||||
|
||||
def sql_delete(self, table, pairs, *, commit=False):
|
||||
cur = self.sql.cursor()
|
||||
|
||||
(qmarks, bindings) = sqlhelpers.delete_filler(pairs)
|
||||
query = 'DELETE FROM %s %s' % (table, qmarks)
|
||||
#self.log.debug(query)
|
||||
cur.execute(query, bindings)
|
||||
|
||||
if commit:
|
||||
self.commit()
|
||||
|
||||
def sql_insert(self, table, data, *, commit=False):
|
||||
column_names = constants.SQL_COLUMNS[table]
|
||||
cur = self.sql.cursor()
|
||||
|
||||
(qmarks, bindings) = sqlhelpers.insert_filler(column_names, data)
|
||||
query = 'INSERT INTO %s VALUES(%s)' % (table, qmarks)
|
||||
#self.log.debug(query)
|
||||
cur.execute(query, bindings)
|
||||
|
||||
if commit:
|
||||
self.commit()
|
||||
|
||||
def sql_update(self, table, pairs, where_key, *, commit=False):
|
||||
cur = self.sql.cursor()
|
||||
|
||||
(qmarks, bindings) = sqlhelpers.update_filler(pairs, where_key=where_key)
|
||||
query = 'UPDATE %s %s' % (table, qmarks)
|
||||
#self.log.debug(query)
|
||||
cur.execute(query, bindings)
|
||||
|
||||
if commit:
|
||||
self.commit()
|
||||
|
||||
|
||||
_THING_CLASSES = {
|
||||
'album':
|
||||
|
|
Loading…
Reference in a new issue