diff options
-rw-r--r-- | src/carquinyol/indexstore.py | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/src/carquinyol/indexstore.py b/src/carquinyol/indexstore.py index ba76da6..3a00c25 100644 --- a/src/carquinyol/indexstore.py +++ b/src/carquinyol/indexstore.py @@ -164,6 +164,13 @@ class IndexStore(object): # TODO: total_count will be totally off if all_versions is not set return (tvids, total_count) + _queryTermMap = { + 'tree_id': _PREFIX_TID, + 'version_id': _PREFIX_VID, + 'bundle_id': _PREFIX_BUNDLE_ID, + 'activitiy_id': _PREFIX_ACTIVITY_ID, + 'keep': _PREFIX_KEEP, + } def _parse_query(self, query_dict): logging.debug('_parse_query %r' % query_dict) queries = [] @@ -188,6 +195,12 @@ class IndexStore(object): queries.append(query) + # metadata -> term for simple datatypes (string, bool) + for (m_name, term_prefix) in self._queryTermMap.items() : + m_value = query_dict.pop(m_name, None) + if m_value is not None: + queries.append(Query(term_prefix+str(m_value))) + timestamp = query_dict.pop('timestamp', None) if timestamp is not None: start = str(timestamp.pop('start', 0)) @@ -195,29 +208,6 @@ class IndexStore(object): query = Query(Query.OP_VALUE_RANGE, _VALUE_TIMESTAMP, start, end) queries.append(query) - # TODO: refactor / simplify - tree_id = query_dict.pop('tree_id', None) - if tree_id is not None: - queries.append(Query(_PREFIX_TID + tree_id)) - - version_id = query_dict.pop('version_id', None) - if version_id is not None: - queries.append(Query(_PREFIX_VID + version_id)) - - bundle_id = query_dict.pop('bundle_id', None) - if bundle_id is not None: - queries.append(Query(_PREFIX_BUNDLE_ID + bundle_id)) - - activity_id = query_dict.pop('activity_id', None) - if activity_id is not None: - query = Query(_PREFIX_ACTIVITY_ID + activity_id) - queries.append(query) - - keep = query_dict.pop('keep', None) - if keep is not None: - query = Query(_PREFIX_KEEP + str(keep)) - queries.append(query) - mime_type = query_dict.pop('mime_type', None) if mime_type is not None: mime_queries = [] |