diff --git a/goblin/session.py b/goblin/session.py index 0cb286ecdf3713a9e414429ed7c8208978f92590..15153849c72c4708b7ec923cf235674fba95287f 100644 --- a/goblin/session.py +++ b/goblin/session.py @@ -432,13 +432,7 @@ class Session: """Convenience function for generating crud traversals.""" props = mapper.map_props_to_db(vertex, vertex.__mapping__) traversal = self._g.addV(vertex.__mapping__.label) - traversal, _, metaprops = self._add_properties(traversal, props) - result = await self._simple_traversal(traversal, vertex) - if metaprops: - await self._add_metaprops(result, metaprops, vertex) - traversal = self._g.V(Binding('vid', vertex.id)) - result = await self._simple_traversal(traversal, vertex) - return result + return await self._add_properties(traversal, props, vertex) async def _add_edge(self, edge): """Convenience function for generating crud traversals.""" @@ -446,9 +440,7 @@ class Session: traversal = self._g.V(Binding('sid', edge.source.id)) traversal = traversal.addE(edge.__mapping__._label) traversal = traversal.to(__.V(Binding('tid', edge.target.id))) - traversal, _, _ = self._add_properties(traversal, props) - result = await self._simple_traversal(traversal, edge) - return result + return await self._add_properties(traversal, props, edge) async def _check_vertex(self, vertex): """Used to check for existence, does not update session vertex""" @@ -464,54 +456,14 @@ class Session: async def _update_vertex_properties(self, vertex, traversal, props): await self._g.V(vertex.id).properties().drop().iterate() - traversal, removals, metaprops = self._add_properties(traversal, props) - result = await self._simple_traversal(traversal, vertex) - if metaprops: - removals = await self._add_metaprops(result, metaprops, vertex) - # This can be tested for/removed - for db_name, key, value in removals: - await self._g.V(Binding('vid', vertex.id)).properties( - db_name).has(key, value).drop().next() - traversal = self._g.V(Binding('vid', vertex.id)) - result = await self._simple_traversal(traversal, vertex) - return result + return await self._add_properties(traversal, props, vertex) async def _update_edge_properties(self, edge, traversal, props): - traversal, removals, _ = self._add_properties(traversal, props) - eid = edge.id - if isinstance(eid, dict): - eid = Binding('eid', edge.id) - for k in removals: - await self._g.E(eid).properties(k).drop().next() - return await self._simple_traversal(traversal, edge) - - async def _add_metaprops(self, result, metaprops, vertex): - potential_removals = [] - for metaprop in metaprops: - # Make sure to get vp ids here. - db_name, (binding, value), metaprops = metaprop - # Make sure to get vp ids here. - for key, val in metaprops.items(): - if val: - prop_name = vertex.__mapping__.db_properties[db_name][0] - vp = vertex.__properties__[prop_name] - # Select and add by id here if possible - if vp.cardinality == Cardinality.single: - traversal = self._g.V(Binding('vid', result.id)).properties( - db_name).property(key, val) - else: - traversal = self._g.V(Binding('vid', result.id)).properties( - db_name).hasValue(value).property(key, val) - await traversal.iterate() - # pass - else: - potential_removals.append((db_name, key, value)) - return potential_removals + await self._g.E(edge.id).properties().drop().iterate() + return await self._add_properties(traversal, props, edge) - def _add_properties(self, traversal, props): + async def _add_properties(self, traversal, props, elem): binding = 0 - potential_removals = [] - potential_metaprops = [] for card, db_name, val, metaprops in props: if not metaprops: metaprops = {} @@ -534,8 +486,4 @@ class Session: metaprops.keys(), metaprops.values()) for j in i] traversal = traversal.property(key, val, *metas) binding += 1 - if metaprops: - potential_metaprops.append((db_name, val, metaprops)) - else: - potential_removals.append(db_name) - return traversal, potential_removals, potential_metaprops + return await self._simple_traversal(traversal, elem)