Source code for biothings.hub.dataload.sync

"""
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)