diff --git a/etiquette/constants.py b/etiquette/constants.py index bccf589..95ce0f6 100644 --- a/etiquette/constants.py +++ b/etiquette/constants.py @@ -144,39 +144,6 @@ for statement in DB_INIT.split(';'): _sql_dictify = lambda columns: {key:index for (index, key) in enumerate(columns)} SQL_INDEX = {key: _sql_dictify(value) for (key, value) in SQL_COLUMNS.items()} -def _extract_column_names(table): - statement = DB_INIT.split('CREATE TABLE IF NOT EXISTS %s(' % table)[1] - statement = statement.split(');')[0] - statement = statement.replace('\n', ' ') - columns = statement.split(',') - columns = [column.strip().split(' ')[0] for column in columns] - return columns - -SQL_LASTID_COLUMNS = _extract_column_names('id_numbers') -SQL_ALBUM_DIRECTORY_COLUMNS = _extract_column_names('album_associated_directories') -SQL_ALBUM_COLUMNS = _extract_column_names('albums') -SQL_BOOKMARK_COLUMNS = _extract_column_names('bookmarks') -SQL_PHOTO_COLUMNS = _extract_column_names('photos') -SQL_TAG_COLUMNS = _extract_column_names('tags') -SQL_SYN_COLUMNS = _extract_column_names('tag_synonyms') -SQL_ALBUMGROUP_COLUMNS = _extract_column_names('album_group_rel') -SQL_ALBUMPHOTO_COLUMNS = _extract_column_names('album_photo_rel') -SQL_PHOTOTAG_COLUMNS = _extract_column_names('photo_tag_rel') -SQL_TAGGROUP_COLUMNS = _extract_column_names('tag_group_rel') -SQL_USER_COLUMNS = _extract_column_names('users') - -SQL_ALBUM = _sql_dictify(SQL_ALBUM_COLUMNS) -SQL_ALBUM_DIRECTORY = _sql_dictify(SQL_ALBUM_DIRECTORY_COLUMNS) -SQL_ALBUMGROUP = _sql_dictify(SQL_ALBUMGROUP_COLUMNS) -SQL_BOOKMARK = _sql_dictify(SQL_BOOKMARK_COLUMNS) -SQL_ALBUMPHOTO = _sql_dictify(SQL_ALBUMPHOTO_COLUMNS) -SQL_LASTID = _sql_dictify(SQL_LASTID_COLUMNS) -SQL_PHOTO = _sql_dictify(SQL_PHOTO_COLUMNS) -SQL_PHOTOTAG = _sql_dictify(SQL_PHOTOTAG_COLUMNS) -SQL_SYN = _sql_dictify(SQL_SYN_COLUMNS) -SQL_TAG = _sql_dictify(SQL_TAG_COLUMNS) -SQL_TAGGROUP = _sql_dictify(SQL_TAGGROUP_COLUMNS) -SQL_USER = _sql_dictify(SQL_USER_COLUMNS) ALLOWED_ORDERBY_COLUMNS = [ 'extension', diff --git a/etiquette/objects.py b/etiquette/objects.py index 23d7040..9b26afb 100644 --- a/etiquette/objects.py +++ b/etiquette/objects.py @@ -10,7 +10,6 @@ from . import helpers from voussoirkit import bytestring from voussoirkit import pathclass from voussoirkit import spinal -from voussoirkit import sqlhelpers class ObjectBase: @@ -211,13 +210,13 @@ class GroupableMixin: class Album(ObjectBase, GroupableMixin): - group_sql_index = constants.SQL_ALBUMGROUP group_table = 'album_group_rel' + group_sql_index = constants.SQL_INDEX[group_table] def __init__(self, photodb, db_row): super().__init__(photodb) if isinstance(db_row, (list, tuple)): - db_row = dict(zip(constants.SQL_ALBUM_COLUMNS, db_row)) + db_row = dict(zip(constants.SQL_COLUMNS['albums'], db_row)) self.id = db_row['id'] self.title = db_row['title'] or '' @@ -481,7 +480,7 @@ class Bookmark(ObjectBase): def __init__(self, photodb, db_row): super().__init__(photodb) if isinstance(db_row, (list, tuple)): - db_row = dict(zip(constants.SQL_BOOKMARK_COLUMNS, db_row)) + db_row = dict(zip(constants.SQL_COLUMNS['bookmarks'], db_row)) self.id = db_row['id'] self.title = db_row['title'] @@ -537,7 +536,7 @@ class Photo(ObjectBase): def __init__(self, photodb, db_row): super().__init__(photodb) if isinstance(db_row, (list, tuple)): - db_row = dict(zip(constants.SQL_PHOTO_COLUMNS, db_row)) + db_row = dict(zip(constants.SQL_COLUMNS['photos'], db_row)) self.real_filepath = helpers.remove_path_badchars(db_row['filepath'], allowed=':\\/') self.real_path = pathclass.Path(self.real_filepath) @@ -1041,13 +1040,13 @@ class Tag(ObjectBase, GroupableMixin): ''' A Tag, which can be applied to Photos for organization. ''' - group_sql_index = constants.SQL_TAGGROUP group_table = 'tag_group_rel' + group_sql_index = constants.SQL_INDEX[group_table] def __init__(self, photodb, db_row): super().__init__(photodb) if isinstance(db_row, (list, tuple)): - db_row = dict(zip(constants.SQL_TAG_COLUMNS, db_row)) + db_row = dict(zip(constants.SQL_COLUMNS['tags'], db_row)) self.id = db_row['id'] self.name = db_row['name'] self.description = db_row['description'] or '' @@ -1318,7 +1317,7 @@ class User(ObjectBase): def __init__(self, photodb, db_row): super().__init__(photodb) if isinstance(db_row, (list, tuple)): - db_row = dict(zip(constants.SQL_USER_COLUMNS, db_row)) + db_row = dict(zip(constants.SQL_COLUMNS['users'], db_row)) self.id = db_row['id'] self.username = db_row['username'] self.created = db_row['created']