1# pylint:disable=unused-import 2from ..models import DbKnowledgeBase, DbXRefs 3from ...knowledge_plugins.xrefs import XRefManager 4from ...knowledge_plugins.cfg import CFGModel 5from ...knowledge_base import KnowledgeBase 6 7 8class XRefsSerializer: 9 """ 10 Serialize/unserialize an XRefs object to/from a database session. 11 """ 12 13 @staticmethod 14 def dump(session, db_kb, xrefs): 15 """ 16 17 :param session: 18 :param DbKnowledgeBase db_kb: 19 :param XRefManager xrefs: 20 :return: 21 """ 22 23 db_xrefs = db_kb.xrefs 24 25 blob = xrefs.serialize() 26 if db_xrefs is not None: 27 # update the existing xrefs 28 db_xrefs.blob = blob 29 else: 30 # create a new xrefs 31 db_xrefs = DbXRefs(kb=db_kb, blob=blob) 32 session.add(db_xrefs) 33 34 @staticmethod 35 def load(session, db_kb, kb, cfg_model=None): # pylint:disable=unused-argument 36 """ 37 38 :param session: 39 :param DbKnowledgeBase db_kb: 40 :param KnowledgeBase kb: 41 :param CFGModel cfg_model: 42 :return: 43 """ 44 45 db_xrefs = db_kb.xrefs 46 if db_xrefs is None: 47 return None 48 49 xrefs = XRefManager.parse(db_xrefs.blob, cfg_model=cfg_model, kb=kb) 50 return xrefs 51