diff options
author | Sascha Silbe <sascha@silbe.org> | 2009-07-10 14:57:08 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha@silbe.org> | 2009-08-17 11:15:17 (GMT) |
commit | 9644aa993955bd9be32d93ad1117e4201ff3b473 (patch) | |
tree | 66a5a0b74d1ec3ac51ff440539c9dca4562c8a0d | |
parent | a278f7cea03a70e4d273c38a397d655a25c514d2 (diff) |
simplify _parse_query() for simple data types
-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 = [] |