def create_edge(node_1, node_2, R, t):
  global session

  edge = Graph_Edges()
  edge.node_1_id = node_1.node_id
  edge.node_2_id = node_2.node_id
  
  transform = [R, t]
  transform_filepath = save_transform(transform, node_1, node_2)
  edge.opt_transform_1_to_2_filepath = transform_filepath

  #TODO: do we need to save these?
  '''
  _3d_matches_filepath = save_3d_matches(point_matches,
      pose_3d_points, 
      feature_3d_points, 
      new_pose_node.node_id, 
      feature_node.node_id, 
      transform)

  edge._3d_matches_filepath = _3d_matches_filepath
  '''

  session.add(edge)
  session.commit()
  return edge
def connect_pose_to_feature(new_pose_node, feature_node, transform, point_matches, pose_3d_points, feature_3d_points):
    global session

    edge = Graph_Edges()
    edge.node_1_id = new_pose_node.node_id
    edge.node_1_type = "pose"
    edge.node_2_id = feature_node.node_id
    edge.node_2_type = "feature"

    transform_filepath = save_transform(transform, None, new_pose_node, feature_node)
    edge.opt_transform_1_to_2_filepath = transform_filepath

    _3d_matches_filepath = save_3d_matches(
        point_matches, pose_3d_points, feature_3d_points, new_pose_node.node_id, feature_node.node_id, transform
    )

    edge._3d_matches_filepath = _3d_matches_filepath

    session.add(edge)
    session.commit()