From 655d1fa23521769b81642028fdaa0a56b87a1139 Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Fri, 16 Feb 2018 18:48:03 -0800 Subject: [PATCH] Prepare to use dicts SQL_COLUMNS, _INDEX instead of separate. --- etiquette/constants.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/etiquette/constants.py b/etiquette/constants.py index 4e9b45e..bccf589 100644 --- a/etiquette/constants.py +++ b/etiquette/constants.py @@ -130,6 +130,20 @@ CREATE INDEX IF NOT EXISTS index_users_id on users(id); CREATE INDEX IF NOT EXISTS index_users_username on users(username COLLATE NOCASE); '''.format(user_version=DATABASE_VERSION) +SQL_COLUMNS = {} +for statement in DB_INIT.split(';'): + if 'create table' not in statement.lower(): + continue + + table_name = statement.split('(')[0].strip().split(' ')[-1] + column_names = statement.split('(')[1].rsplit(')', 1)[0] + column_names = column_names.split(',') + column_names = [x.strip().split(' ')[0] for x in column_names] + SQL_COLUMNS[table_name] = column_names + +_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] @@ -151,7 +165,6 @@ 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_dictify = lambda columns: {key:index for (index, key) in enumerate(columns)} SQL_ALBUM = _sql_dictify(SQL_ALBUM_COLUMNS) SQL_ALBUM_DIRECTORY = _sql_dictify(SQL_ALBUM_DIRECTORY_COLUMNS) SQL_ALBUMGROUP = _sql_dictify(SQL_ALBUMGROUP_COLUMNS)