docs: def _add_resourcegroupitem(group_item, scenario_id):
      """
          Add a single resource group item (no DB flush, as it's an internal function)
      """
      if group_item.id and group_item.id > 0:
          try:
              group_item_i = db.DBSession.query(ResourceGroupItem).filter(ResourceGroupItem.id == group_item.id).one()
          except NoResultFound:
              raise ResourceNotFoundError("ResourceGroupItem %s not found" % (group_item.id))
  
      else:
          group_item_i = ResourceGroupItem()
          group_item_i.group_id = group_item.group_id
          if scenario_id is not None:
              group_item_i.scenario_id = scenario_id
  
          db.DBSession.add(group_item_i)
  
      ref_key = group_item.ref_key
      group_item_i.ref_key = ref_key
      if ref_key == 'NODE':
          group_item_i.node_id =group_item.ref_id if group_item.ref_id else group_item.node_id
      elif ref_key == 'LINK':
          group_item_i.link_id =group_item.ref_id if group_item.ref_id else group_item.link_id
      elif ref_key == 'GROUP':
          group_item_i.subgroup_id = group_item.ref_id if group_item.ref_id else group_item.subgroup_id
  
      return group_item_i