'''
Deprecated. This module is not used any more.
'''
from biothings.utils.mongo import get_src_db
from biothings.utils.common import loadobj
[docs]
class MongoSync():
def __init__(self):
self._src = get_src_db()
[docs]
def add_update(self, source, merge_collection, ids):
for _id in ids:
doc = self._src[source].get_from_id(_id)
self._src[merge_collection].update({'_id': _id}, {'$set': doc}, upsert=True)
[docs]
def delete(self, merge_collection, field, ids):
for _id in ids:
doc = self._src[merge_collection].get_from_id(_id)
if set(doc) == set(['_id', field]) or set(doc) == set(['_id', field, 'snpeff', 'vcf']):
self._src[merge_collection].remove(_id)
else:
self._src[merge_collection].update({'_id': _id}, {'$unset': {field: 1}})
[docs]
def main(self, diff_filepath, merge_collection, field):
diff = loadobj(diff_filepath)
source_collection = diff['source']
add_ids = diff['add']
delete_ids = diff['delete']
update_ids = [_doc['_id'] for _doc in diff['update']]
self.add_update(source_collection, merge_collection, add_ids)
self.add_update(source_collection, merge_collection, update_ids)
self.delete(merge_collection, field, delete_ids)