code: def set(self, collection, obj):
      self.__reload()
      compatible_obj = denormalize_entity(obj)
      if collection == "model":
          item = self.ModelDocument(compatible_obj)
      elif collection == "code":
          item = self.CodeDocument(compatible_obj)
      elif collection == "environment":
          item = self.EnvironmentDocument(compatible_obj)
      elif collection == "file_collection":
          item = self.FileCollectionDocument(compatible_obj)
      elif collection == "task":
          item = self.TaskDocument(compatible_obj)
      elif collection == "snapshot":
          item = self.SnapshotDocument(compatible_obj)
      elif collection == "user":
          item = self.UserDocument(compatible_obj)
      else:
          raise EntityCollectionNotFound(collection)
      self.backend.save(item)
      self.backend.commit()
      return self.get(collection, item.pk)
  
file_path: datmo/datmo/core/storage/driver/blitzdb_dal_driver.py
imports: from blitzdb import Document, queryset
  from datetime import datetime
  from datmo.core.util.exceptions import EntityNotFound, EntityCollectionNotFound, IncorrectType, InvalidArgumentType, RequiredArgumentMissing, MoreThanOneEntityFound
  from datmo.core.storage.driver import DALDriver
label_desc: Use image node_id 5 for calling the BlitzDBDALDriver obj's underlying member method code with example usage: obj.set(collection, obj) and returns: self